EasyX實(shí)現(xiàn)自由落體小球
本文實(shí)例為大家分享了EasyX實(shí)現(xiàn)自由落體小球的具體代碼,供大家參考,具體內(nèi)容如下
1. 要實(shí)現(xiàn)自由落體,首先得實(shí)現(xiàn)勻速下落
#include<graphics.h> ? ?//圖形庫頭文件
#include<conio.h>
#include<cstdio>
#define WIDTH 400 ? //窗口寬度
#define HEIGHT 600 ? //窗口高度
int main()
{
?? ?//定義并初始化小球坐標(biāo)
?? ?float ballX = WIDTH / 2;
?? ?float ballY = 10;
?? ?//創(chuàng)建窗口
?? ?initgraph(WIDTH, HEIGHT);
?? ?while (1)
?? ?{
?? ??? ?ballY++; ? ? ? ?//改變小球的y坐標(biāo)
?? ??? ?cleardevice(); ?//清屏
?? ??? ?fillcircle(ballX, ballY, 10); ?//繪制小球
?? ??? ?Sleep(10); ? ? ? ? ? ?//暫停10毫秒
?? ?}
?? ?_getch(); ? ? ? ? //等待按鍵輸入(卡屏作用)
?? ?closegraph(); ? ? ?//關(guān)閉窗口
?? ?return 0;
}
2.然后在勻速的基礎(chǔ)上實(shí)現(xiàn)加速運(yùn)動(dòng)
(只需要實(shí)現(xiàn)y方向的增量不斷改變即可)
#include<graphics.h>
#include<conio.h>
#include<cstdio>
#define WIDTH 400 ? //窗口寬度
#define HEIGHT 600 ? //窗口高度
int main()
{
?? ?//定義并初始化小球坐標(biāo)
?? ?float ballX = WIDTH / 2;
?? ?float ballY = 10;
?? ?//定義小球初始下落速度
?? ?float vy = 0.0;
?? ?//定義小球下落加速度
?? ?float g = 0.5; ? ? ? //y方向的增量
?? ?//創(chuàng)建窗口
?? ?initgraph(WIDTH, HEIGHT);
?? ?while (1)
?? ?{
?? ??? ?//實(shí)現(xiàn)加速下落
?? ??? ?//改變下落速度
?? ??? ?vy = vy + g;
?? ??? ?//改變Y方向坐標(biāo)
?? ??? ?ballY = ballY + vy;
?? ??? ?//做反彈處理
?? ??? ?if (ballY >= 590)
?? ??? ??? ?vy = -0.95*vy; ? //改變vy的方向,加一點(diǎn)阻力
?? ??? ?//做下邊界處理
?? ??? ?if (ballY > 590)
?? ??? ??? ?ballY = 590;
?? ??? ?cleardevice(); ?//清屏
?? ??? ?fillcircle(ballX, ballY, 10); ?//繪制小球
?? ??? ?Sleep(100); ? ? ? ? ? ?//暫停100毫秒
?? ?}
?? ?_getch();
?? ?closegraph();
?? ?return 0;
}
要點(diǎn)一: 通過增量改變每一次 y 方向上值改變的不同
要點(diǎn)二: 下邊界處理, 當(dāng) y >窗口高度 - 小球半徑 時(shí)需要將 y 坐標(biāo)置為 窗口高度 - 小球半徑
要點(diǎn)三: vy的反向
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Qt界面中滑動(dòng)條的實(shí)現(xiàn)方式
這篇文章主要介紹了Qt界面中滑動(dòng)條的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
C++vector的insert函數(shù)用法小結(jié)
std::vector::insert是C++中用于在指定位置插入元素的函數(shù),支持插入單個(gè)元素、多個(gè)相同元素、一個(gè)范圍的元素或初始化列表中的元素,插入操作可能會(huì)使插入點(diǎn)之后的迭代器失效,并且時(shí)間復(fù)雜度為O(n),本文介紹C++vector的insert函數(shù)用法小結(jié),感興趣的朋友一起看看吧2025-03-03
C++ OpenCV實(shí)現(xiàn)銀行卡號(hào)識(shí)別功能
這篇文章主要介紹了如何使用OpenCV C++實(shí)現(xiàn)銀行卡號(hào)識(shí)別功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)OpenCV有一定幫助,需要的可以參考一下2022-01-01
C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表
在數(shù)據(jù)結(jié)構(gòu)中,線性表是入門級(jí)數(shù)據(jù)結(jié)構(gòu),線性表又分為順序表和鏈表,這篇文章主要給大家介紹了關(guān)于C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表的相關(guān)資料,需要的朋友可以參考下2021-06-06
C++實(shí)現(xiàn)string存取二進(jìn)制數(shù)據(jù)的方法
這篇文章主要介紹了C++實(shí)現(xiàn)string存取二進(jìn)制數(shù)據(jù)的方法,針對(duì)STL中string的用法進(jìn)行了較為詳細(xì)的分析,需要的朋友可以參考下2014-10-10
C++ OpenCV實(shí)戰(zhàn)之制作九宮格圖像
本文將為大家介紹如何使用OpenCV C++ 制作九宮格圖像,即將一張圖像均等分成九份,然后將這九個(gè)小塊按一定間隔拷貝到新畫布上就可以啦。感興趣的可以動(dòng)手試一試2022-01-01

