C/C++圖形化編程(2)

歸納編程學習的感悟,
記錄奮斗路上的點滴,
希望能幫到一樣刻苦的你!
如有不足歡迎指正!
共同學習交流!
🌎歡迎各位→點贊 👍+ 收藏? + 留言?📝
站在巨人的肩上是為了超過巨人!

一起加油!

?

目錄

五、實現EasyX按鍵交互功能:

六、?實現EasyX中鼠標交互功能:


五、實現EasyX按鍵交互功能:

1.阻塞按鍵交互? ? ? ? 不按鍵就不運行,像C語言中的scanf函數,不輸入,程序就不往下運行。

2.非阻塞按鍵交互? ? ? ? 不按鍵程序仍在運行

案例:

1.小球移動:

2.按鍵控制移動:

  • 雙緩沖貼圖(解決閃爍問題)
    • 開始雙緩沖????????BeginBatchDraw();
    • 顯示一幀? ? ? ? ? ?FlushBatchDraw();
    • 結束雙緩沖? ? ? ?EndBatchDraw();
#include<stdio.h>
#include<graphics.h>
#include<time.h>
#include<conio.h>//_getch()函數	不需要回車確認函數,_kbhit()函數	判斷存在按鍵再去處理
//定義球的結構體
struct Ball {int x;//球的坐標int y;int r;//球的半徑int dx;//增量xint dy;//增量y
};
Ball ball = { 300,300,15,5,-4 };
Ball myball = {400,400,15,5,5};
void DrawBall(struct Ball ball) {//畫球//給球填充顏色為紅色setfillcolor(RED);//畫出球solidcircle(ball.x, ball.y, ball.r);
}
void MoveBall() {//移動球if (ball.x - ball.r < 0 || ball.x + ball.r>=600) {ball.dx = -ball.dx;//撞左壁}if (ball.y - ball.r < 0 || ball.y + ball.r>=600) {ball.dy = -ball.dy;//撞右壁}ball.x += ball.dx;ball.y += ball.dy;
}
//定時器	去控制自動移動的東西
int Timer(int duration, int id) {static int startTime[10];//通過靜態變量做10個定時器,靜態變量自動被初始化int endTime = clock();//clock()函數統計程序運行到當前代碼所需的時間if (endTime - startTime[id] > duration) {//觸發定時器返回1startTime[id] = endTime;//開始時間改為上一次的結束時間return 1;}return 0;
}
void KeyDown() {//接收用戶按鍵int useKey =_getch();switch (useKey) {case'w':case'W':case 72://小鍵盤的箭頭上myball.y -= 5;break;case 's':case'S':case 80:myball.y += 5;break;case'a':case'A':case 75:myball.x -= 5;break;case'd':case'D':case 77:myball.x += 5;break;}
}
void KeyDown2() {//異步交互if (GetAsyncKeyState(VK_UP)) {myball.y -= 5;}if (GetAsyncKeyState(VK_DOWN)) {myball.y += 5;}if (GetAsyncKeyState(VK_LEFT)) {myball.x -= 5;}if (GetAsyncKeyState(VK_RIGHT)) {myball.x += 5;}
}
int main() {initgraph(600, 600);//創建800x800的窗口BeginBatchDraw();//雙緩沖貼圖,開始雙緩沖while (1) {cleardevice();DrawBall(ball);DrawBall(myball);if (Timer(20, 0)) {MoveBall();}if (_kbhit()) {//判斷存在按鍵再去處理KeyDown();}if (Timer(20, 1)) {KeyDown2();}FlushBatchDraw();//顯示一幀//Sleep(20);//阻塞函數,做移動一般不用Sleep,他會阻塞整個程序,一般用定時器去做}EndBatchDraw();//結束雙緩沖closegraph();return 0;
}

六、?實現EasyX中鼠標交互功能:

ExMassag類型的變量,去存儲鼠標消息

獲取鼠標消息:peekmassage(&變量)

討論鼠標消息

  • msg.massage區分鼠標消息的類型
  • msg.x? ?msg.y鼠標的當前坐標
#include<graphics.h>
int main() {initgraph(600, 600);ExMessage msg;//按左鍵畫圓,右鍵畫方while (1) {while (peekmessage(&msg)) {switch (msg.message) {//windows massage left button downcase WM_LBUTTONDOWN:circle(msg.x, msg.y, 10);break;//windows massage right button downcase WM_RBUTTONDOWN:rectangle(msg.x - 10, msg.y - 10, msg.x + 10, msg.y + 10);break;}}}closegraph();return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450099.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450099.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450099.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git clone之后你的硬盤上究竟發生了什么?

網上關于Git的使用有太多的博客&#xff0c;文章在講解了&#xff0c;大部分是在講解命令的用法&#xff0c;剩下一部分則在講解git的內部原理&#xff0c;看過講解基礎命令使用的文章后&#xff0c;正常的開發使用是沒有什么問題的了&#xff0c;而如果想更深入的了解git“高級…

Shell 語法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 運行sh腳本的2種方法&#xff1a; ./AAA。sh 或者 sh AAA.sh 。&#xff08;其實后輟名不重要。是txt也是可以運行的。&#xff09;…

感知機模型的對偶形式[轉載]

轉自:https://blog.csdn.net/jaster_wisdom/article/details/78240949#commentBox 1.區分一下易混淆的兩個概念&#xff0c;梯度下降和隨機梯度下降&#xff1a; 梯度下降&#xff1a;一次將誤分類集合中所有誤分類點的梯度下降&#xff1b; 隨機梯度下降&#xff1a;隨機選取一…

Android Studio常用快捷鍵

注&#xff1a;本文大部分內容轉載自——碼個蛋微信公眾號里的“熟練這些&#xff0c;才會知道 Android studio 有多高效”由于是微信公眾號通過傳送門看的&#xff0c;沒有原文鏈接。 顯示方法的參數 當我們使用一個方法的時候&#xff0c;會在剛開始的時候顯示出所有的參數。…

中國城市政治地位,政治地位決定一切!!!

第一政治等級&#xff1a;省級城市&#xff08;包括直轄市、特別行政區&#xff09;6個 北京市、上海市、天津市、重慶市、香港特別行政區、澳門特別行政區 第二政治等級&#xff1a;副省級城市&#xff08;含五個計劃單列市&#xff09; 15個 沈陽市、大連市&…

Shell 字符串截取

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Linux 的字符串截取很有用。有八種方法。 假設有變量 varhttp://www.aaa.com/123.htm 1. # 號截取&#xff0c;刪除左邊字符&#xff0c;…

go語言漸入佳境[6]-operator運算符

運算符和其他語言一樣&#xff0c;Go語言支持多種運算符&#xff0c;用于對變量進行運算。12345678910111213package mainimport "fmt"func main(){ //math() //relation() //logic() //wei() Assign()}算術運算符123456789101112func math(){ a : 4 b:2 fmt.Printf(…

Android應用開發—setResult()的調用時機

本文轉載自setResult()的調用時機&#xff0c;此處做了重新的排版&#xff0c;只是感覺markdown的排版比較好看些&#xff0c;侵刪。 今天遇到這樣一個問題&#xff0c;我在Activity-A中用startActivityForResult()方法啟動了Activity-B&#xff0c;并且在B中通過setResult()方…

記錄騰訊云中礦機病毒處理過程(重裝系統了fu*k)

2019-1-21日常上班的周一 剛想學學kafka&#xff0c;登錄與服務器看看把&#xff0c;誰知ssh特別慢&#xff0c;很奇怪&#xff0c;我以為是我網速問題&#xff0c;斷了wifi&#xff0c;換了網線&#xff0c;通過iterm想要ssh rootx.x.x.x&#xff0c;但是上不去&#xff1f; 就…

從創業失敗中學到的七條教訓

摘要&#xff1a;每個創業者不可能首次創業就能成功。他們的失敗經驗&#xff0c;或許可以指導其他創業者獲得迅速成功。Joshua Hays在文章《7 things I learned from failing that you can avoid》總結了創業失敗后獲得的七條教訓&#xff0c;希望其他創業者可以從中有所收獲&…

unexpected EOF while looking for matching ``‘

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 只是簡單的測試一個shell 腳本&#xff0c;報錯如題。 原因&#xff1a; 雙引號格式不對。 引號切換為英語格式重新輸入&#xff0c;再運…

對象反序列化出現類型不匹配的情況(spring-boot-devtools)

目前在做springboot項目的shiro session redis共享功能。但是有一個對象我把它放到redis中之后再取出來就會出現類型不匹配的異常 AuthorizationUser user (AuthorizationUser) cache.getSuper(key); 異常信息&#xff1a; java.lang.ClassCastException: com.ch.evaluation.a…

最后一周總結

1&#xff09; 回歸第一周目標 對于第一周的目標&#xff0c;在提高代碼量&#xff0c;多寫多練方面達到了&#xff0c;之前結點編程時還不是很熟悉python&#xff0c;現在寫的比較熟練了&#xff0c;同時學習了一門新的語言Julia&#xff0c;在學習的過程中也看了Julia和Flux的…

音視頻多媒體協議相關資料匯總

未知問題&#xff1a; 編碼&#xff0c;封裝&#xff0c;協議的區別&#xff1a; 如何將TS源流重新封裝并通過P2P協議傳輸在安卓終端和蘋果終端播放封裝 介紹完了視頻編碼后&#xff0c;再來介紹一些封裝。沿用前面的比喻&#xff0c;封裝可以理解為采用哪種貨車去運輸&…

谷歌地圖VS蘋果地圖:大數據領域競爭

摘要&#xff1a;iOS 6推出之后&#xff0c;爭議最大的是什么&#xff1f;蘋果地圖。蘋果地圖成為人們抨擊iOS 6的首選&#xff0c;而蘋果放棄谷歌地圖選擇自力更生是迫不得已。蘋果和谷歌之間的競爭領域可以用三個字來概括&#xff1a;大數據。谷歌擁有大數據&#xff0c;而蘋…

Shell 參數傳遞、 $* 與 $@ 區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 傳遞參數 腳本內獲取參數的格式為&#xff1a; $n。n 代表一個數字&#xff0c;1 為執行腳本的第一個參數&#xff0c; 2 為執行腳本的第…

微軟正在考慮將Windows默認瀏覽器改為Chromium

據外媒報道&#xff0c;微軟正在構建一個基于Chromium的瀏覽器&#xff0c;代號為Anaheim&#xff0c;目標是取代Windows中的Edge。 Microsoft Edge是微軟于2015年推出的瀏覽器&#xff0c;該瀏覽器取代了IE成為Windows 10的默認瀏覽器。盡管如此&#xff0c;Microsoft Edge并沒…

css文本屬性

text-align文本水平對齊屬性 取值 left(默認) right center text-indent 文本縮進屬性 單位可以是px也可以是em(字符) text-decoration 文本裝飾屬性 取值 underline(下劃線) overline(上劃線) line-though(刪除線) 轉載于:https://www.cnblogs.com/c-aha/p/10298422.html

三次握手的第三個ACK包丟了,會發生什么?

轉載自三次握手的第三個ACK包丟了&#xff0c;TCP的處理方式 三次握手的第三個ACK包丟了&#xff0c;客戶端認為連接建立&#xff0c;寫數據時&#xff0c;會觸發RST。 當Client端收到Server的SYNACK應答后&#xff0c;其狀態變為ESTABLISHED&#xff0c;并發送ACK包給Server&a…

運營商與廠商發力 智能機進入700元以下時代

千元智能手機的成功&#xff0c;并沒有讓運營商以及手機廠商感到滿足。繼中國電信宣布重點打造600元智能手機后&#xff0c;近日&#xff0c;中國聯通也表態將發力700元以下智能手機市場。而運營商的表態立刻引來了多家手機廠商的呼應&#xff0c;產品價格的繼續下探&#xff0…