每天一個(gè)編程小項(xiàng)目,提升你的編程能力!
游戲說明
Player1玩家通過 W、S 按鍵控制左板上下移動(dòng),Player2 玩家通過 O、L 按鍵控制右板上下移動(dòng)。在游戲過程中,小球的速度會(huì)隨著接觸木板的次數(shù)增加而加快,增加游戲難度。當(dāng)小球沒有碰到木板時(shí)游戲結(jié)束。
游戲效果
簡單了解游戲后我們就來試試吧!(直接上源碼,大家可以看注釋)
/////////////////////////////////////////////////// // 程序名稱:雙人擊球游戲 // 編譯環(huán)境: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 坐標(biāo) ball_y = rand() % 180 + 150; // 小球 y 坐標(biāo) dx = (rand() % 2 * 2 - 1)*2; // 小球移動(dòng)增量 dy = (rand() % 2 * 2 - 1)*2; // 小球移動(dòng)增量 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(); // 判斷板移動(dòng)的位置 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; } // 判斷左右倆板是否超出移動(dòng)界限 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; }
大家趕緊去動(dòng)手試試吧!
-
游戲
+關(guān)注
關(guān)注
2文章
768瀏覽量
26697 -
編程
+關(guān)注
關(guān)注
88文章
3683瀏覽量
94882 -
程序
+關(guān)注
關(guān)注
117文章
3824瀏覽量
82442 -
C++
+關(guān)注
關(guān)注
22文章
2117瀏覽量
74789
原文標(biāo)題:【項(xiàng)目實(shí)戰(zhàn)】C/C++自制程序:雙人擊球游戲
文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
c++程序設(shè)計(jì)教程

《C/ C++/ Java 程序設(shè)計(jì)經(jīng)典教程》
c++程序設(shè)計(jì)語言題解

c++程序設(shè)計(jì)習(xí)題答案

C++C/C++程序設(shè)計(jì)教程_C/C++概述
面向?qū)ο蟮?b class='flag-5'>程序設(shè)計(jì)(C++)
C++入門教程之C++程序設(shè)計(jì)的課件資料免費(fèi)下載

C++程序設(shè)計(jì)教程之C++的初步知識(shí)的詳細(xì)資料說明

C++程序設(shè)計(jì)的基礎(chǔ)知識(shí)初步了解C++的資料免費(fèi)下載

評(píng)論