日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Easyx實現窗口自動碰撞的小球_C 語言

作者:shi_xiaobin ? 更新時間: 2022-03-28 編程語言

本文實例為大家分享了Easyx實現窗口自動碰撞的小球的具體代碼,供大家參考,具體內容如下

代碼:

#include<easyx.h>
#include<stdlib.h>
#include<time.h>
?
int main()
{
?? ?//創建窗口
?? ?initgraph(640, 480);
?
?? ?//定義小球的數據
?? ?int bx = getwidth() / 2;
?? ?int by = getheight() / 2;
?? ?int br = 20;
?? ?int xSpeed = 5;//速度
?? ?int ySpeed = 5;
?? ?
?? ?//處理消息
?? ?while (true)
?? ?{
?? ??? ?int startTime = clock();//獲取當前的毫秒數(程序啟動到調用clock的時間)
?? ??? ?//雙緩沖
?? ??? ?BeginBatchDraw();//開始雙緩沖
?? ??? ?//清屏
?? ??? ?cleardevice();
?? ??? ?//繪制小球
?? ??? ?setfillcolor(GREEN);
?? ??? ?solidcircle(bx, by, br);
?
?? ??? ?//移動小球
?? ??? ?bx += xSpeed;
?? ??? ?by += ySpeed;
?
?? ??? ?//如果碰撞到邊界就反彈
?? ??? ?if (bx+br>getwidth()||bx - br < 0)
?? ??? ?{
?? ??? ??? ?xSpeed = -xSpeed;
?? ??? ?}
?? ??? ?if (by + br > getheight() || by - br < 0)
?? ??? ?{
?? ??? ??? ?ySpeed = -ySpeed;
?? ??? ?}
?? ??? ?
?? ??? ?static ExMessage msg;//每次循環的時候,不要重新定義
?? ??? ?while (peekmessage(&msg,EM_MOUSE | EM_KEY))
?? ??? ?{
?
?? ??? ?}
?? ??? ?EndBatchDraw();//把內存中的圖片顯示到窗口上
?
?? ??? ?//fps幀數 ?一般游戲是24幀數或60幀數 ?怎么控制幀率 ?1000毫秒/60幀=16.666
?? ??? ?int frameTime = clock() - startTime;//獲取當前幀執行了多少毫秒
?? ??? ?//如果當前幀執行時間小于美珍應該執行的時間(提前執行完畢)
?? ??? ?if (frameTime < 1000 / 60)
?? ??? ?{
?? ??? ??? ?Sleep(1000 / 60 - frameTime);//多余的時間睡覺
?? ??? ??? ?//Sleep(16);
?? ??? ?}
?? ??? ?
?? ?}
?
?? ?return 0;
}

原文鏈接:https://blog.csdn.net/shi_xiaobin/article/details/122448763

欄目分類
最近更新