每天一個編程小項目,提升你的編程能力!
游戲說明
Player1玩家通過 W、S 按鍵控制左板上下移動,Player2 玩家通過 O、L 按鍵控制右板上下移動。在游戲過程中,小球的速度會隨著接觸木板的次數增加而加快,增加游戲難度。當小球沒有碰到木板時游戲結束。
游戲效果
簡單了解游戲后我們就來試試吧!(直接上源碼,大家可以看注釋)
/////////////////////////////////////////////////// // 程序名稱:雙人擊球游戲 // 編譯環境:VS2010,EasyX_20200902 // #include#include int main() { initgraph(640, 480); srand(GetTickCount()); setbkcolor(WHITE); cleardevice(); setfillcolor(BLACK); setlinecolor(BLACK); settextstyle(30, 0, L"verdana"); settextcolor(BLACK); int p1_x, p1_y, p2_x, p2_y, ball_x, ball_y; int dx, dy; int win = 1; // 贏玩家 p1_x = 45; // 左板 p1_y= 240; p2_x = 595; // 右板 p2_y = 240; ball_x = rand() % 240 + 200; // 小球 x 坐標 ball_y = rand() % 180 + 150; // 小球 y 坐標 dx = (rand() % 2 * 2 - 1)*2; // 小球移動增量 dy = (rand() % 2 * 2 - 1)*2; // 小球移動增量 outtextxy(190, 200, L"Put Enter To Begin"); while(_getwch() != 13); cleardevice(); // player settextstyle(20, 0, L"Verdana"); outtextxy(20, 50, L"Payer1"); outtextxy(565, 50, L"Player2"); // 提示 settextstyle(15, 0, L"Verdana"); outtextxy(20, 400, L"W 向上"); outtextxy(20, 425, L"S 向下"); outtextxy(590, 400, L"O 向上"); outtextxy(590, 425, L"L 向下"); line(50, 100, 590, 100); // 上邊界 line(50, 380, 590, 380); // 下邊界 solidcircle(ball_x, ball_y, 10); wchar_t key=0; while(true) { clearcircle(ball_x, ball_y, 10); // 清除小球位置 clearrectangle(p1_x - 5, p1_y - 20, p1_x + 5, p1_y + 20); // 清除左板 clearrectangle(p2_x - 5, p2_y - 20, p2_x + 5, p2_y + 20); // 清除右板 if(_kbhit()) { // 獲取按鍵 key = _getwch(); // 判斷板移動的位置 if(key == L's') p1_y += 30; else if(key == L'w') p1_y -= 30; else if(key == L'l') p2_y += 30; else if(key == L'o') p2_y -= 30; } // 判斷左右倆板是否超出移動界限 if((p1_y - 20) < 100) p1_y = 120; else if((p1_y + 20) > 380) p1_y = 360; else if((p2_y - 20) < 100) p2_y = 120; else if((p2_y + 20)> 380) p2_y = 360; // 畫左右兩板位置 solidrectangle(p1_x - 5, p1_y - 20, p1_x + 5, p1_y + 20); solidrectangle(p2_x - 5, p2_y - 20, p2_x + 5, p2_y + 20); ball_x = ball_x + dx; ball_y = ball_y + dy; // 判斷小球遇到左右板反彈 if(ball_x < 62 ) { if(ball_y < p1_y + 20 && ball_y > p1_y - 20) { dx = -dx; dx += dx / 10; } else { win = 2; solidcircle(ball_x, ball_y, 10); break; } } else if(ball_x > 578) { if(ball_y < p2_y + 20 && ball_y > p2_y - 20) { dx = -dx; dx += dx / 10; } else { solidcircle(ball_x, ball_y, 10); break; } } // 判斷小球遇到上下邊界反彈 if(ball_y < 115) dy = -dy; else if(ball_y > 364) dy = -dy; solidcircle(ball_x, ball_y, 10); Sleep(20); } settextstyle(30, 0, L"Verdana"); if(win == 1) outtextxy(250, 200, L"Player1 贏"); else outtextxy(250, 200, L"Player2 贏"); _getch(); closegraph(); return 0; }
大家趕緊去動手試試吧!
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
游戲
+關注
關注
2文章
723瀏覽量
26214 -
編程
+關注
關注
88文章
3521瀏覽量
93269 -
程序
+關注
關注
115文章
3720瀏覽量
80357 -
C++
+關注
關注
21文章
2085瀏覽量
73302
原文標題:【項目實戰】C/C++自制程序:雙人擊球游戲
文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
c++程序設計教程
C++是一種高效應用的程序設計語言,它即可進行過程化程序設計,也可進行面向對象程序設計,因而成了編程人員最廣泛使用的工具。學好C++,很容易
發表于 04-08 00:36
?124次下載
《C/ C++/ Java 程序設計經典教程》
《C/ C++/ Java 程序設計經典教程》(Deitel 著)
●集作者幾十年程序設計經驗之精華,從軟件工程的原理強調結構化程序設計方
發表于 04-08 02:10
?398次下載
面向對象的程序設計(C++)
面向對象的程序設計(C++).面向對象的基本思想
C++對C的非面向對象擴充
繼承性與派生類
類庫和基于C++的良好OOP風格。
發表于 03-22 14:40
?0次下載
C++入門教程之C++程序設計的課件資料免費下載
本文檔的主要內容詳細介紹的是C++入門教程之C++程序設計的課件資料免費下載主要內容包括了:1. 認識C++2. C++的現狀和發展3.
發表于 12-07 08:00
?33次下載
C++程序設計的基礎知識初步了解C++的資料免費下載
本文檔的主要內容詳細介紹的是C++程序設計的基礎知識初步了解C++的資料免費下載包括了:1 認識C++,2 C++的現狀和發展,3
發表于 06-10 08:00
?25次下載
評論