網站首頁 編程語言 正文
本文實例為大家分享了EasyX實現自由落體小球的具體代碼,供大家參考,具體內容如下
1. 要實現自由落體,首先得實現勻速下落
#include<graphics.h> ? ?//圖形庫頭文件 #include<conio.h> #include<cstdio> #define WIDTH 400 ? //窗口寬度 #define HEIGHT 600 ? //窗口高度 int main() { ?? ?//定義并初始化小球坐標 ?? ?float ballX = WIDTH / 2; ?? ?float ballY = 10; ?? ?//創建窗口 ?? ?initgraph(WIDTH, HEIGHT); ?? ?while (1) ?? ?{ ?? ??? ?ballY++; ? ? ? ?//改變小球的y坐標 ?? ??? ?cleardevice(); ?//清屏 ?? ??? ?fillcircle(ballX, ballY, 10); ?//繪制小球 ?? ??? ?Sleep(10); ? ? ? ? ? ?//暫停10毫秒 ?? ?} ?? ?_getch(); ? ? ? ? //等待按鍵輸入(卡屏作用) ?? ?closegraph(); ? ? ?//關閉窗口 ?? ?return 0; }
2.然后在勻速的基礎上實現加速運動
(只需要實現y方向的增量不斷改變即可)
#include<graphics.h> #include<conio.h> #include<cstdio> #define WIDTH 400 ? //窗口寬度 #define HEIGHT 600 ? //窗口高度 int main() { ?? ?//定義并初始化小球坐標 ?? ?float ballX = WIDTH / 2; ?? ?float ballY = 10; ?? ?//定義小球初始下落速度 ?? ?float vy = 0.0; ?? ?//定義小球下落加速度 ?? ?float g = 0.5; ? ? ? //y方向的增量 ?? ?//創建窗口 ?? ?initgraph(WIDTH, HEIGHT); ?? ?while (1) ?? ?{ ?? ??? ?//實現加速下落 ?? ??? ?//改變下落速度 ?? ??? ?vy = vy + g; ?? ??? ?//改變Y方向坐標 ?? ??? ?ballY = ballY + vy; ?? ??? ?//做反彈處理 ?? ??? ?if (ballY >= 590) ?? ??? ??? ?vy = -0.95*vy; ? //改變vy的方向,加一點阻力 ?? ??? ?//做下邊界處理 ?? ??? ?if (ballY > 590) ?? ??? ??? ?ballY = 590; ?? ??? ?cleardevice(); ?//清屏 ?? ??? ?fillcircle(ballX, ballY, 10); ?//繪制小球 ?? ??? ?Sleep(100); ? ? ? ? ? ?//暫停100毫秒 ?? ?} ?? ?_getch(); ?? ?closegraph(); ?? ?return 0; }
要點一: 通過增量改變每一次 y 方向上值改變的不同
要點二: 下邊界處理, 當 y >窗口高度 - 小球半徑 時需要將 y 坐標置為 窗口高度 - 小球半徑
要點三: vy的反向
原文鏈接:https://blog.csdn.net/ShiXiAoLaNga/article/details/117359474
相關推薦
- 2022-03-29 Python順序結構語句詳解_python
- 2022-11-08 切換tab時,van-list中的onload事件沒觸發
- 2022-05-14 Python函數中的作用域規則詳解_python
- 2022-03-29 python實現矩陣乘法_python
- 2023-01-07 MPAndroidChart自定義圖表Chart的Attribute及Render繪制邏輯_Andr
- 2022-05-25 Jenkins 把本地項目構建好上傳到云服務器并執行shell腳本啟動項目
- 2022-05-28 C++實現簡單的學生成績管理系統_C 語言
- 2022-09-01 深入了解Golang的指針用法_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支