C++實(shí)現(xiàn)簡易反彈小球游戲的示例代碼
前言
我們利用printf 函數(shù)實(shí)現(xiàn)一個(gè)在屏幕上彈跳的小球,如圖所示。彈跳的小球游戲比較簡單、容易入門,也是反彈球消磚塊、接金幣、臺(tái)球等很多游戲的基礎(chǔ)。
完成游戲前需要掌握的語法知識(shí):標(biāo)識(shí)符、變量、常量、運(yùn)算符與表達(dá)式,以及 printf、scanf、if-else、while、for 語句的用法。
正文部分我們會(huì)逐步進(jìn)行講解,前一部分是后一部分的基礎(chǔ),大家不要跳過閱讀。
一、顯示靜止的小球
首先利用 printf 函數(shù)在屏幕坐標(biāo)(x,y)處顯示一個(gè)靜止的小球字符'o',注意屏幕坐標(biāo)系的原點(diǎn)在左上角,如圖
#include<stdio.h> int main() { int i,j; int x=5; int y=10; //輸出小球上面的空行 for(i=0;i<x;i++) printf("\n"); //輸出小球左邊的空格 for(j=0;j<y;j++) printf(" "); printf("o");//輸出小球 printf("\n"); return 0; }
二、小球下落
改變小球的坐標(biāo)變量,即讓小球的i坐標(biāo)增加,從而讓小球下落。在每次顯示之前使用了清屏函數(shù)system("cls"),注意需要包含新的頭文件#include<stdlib.h>。
#include<stdio.h> #include<stdlib.h> int main() { int i,j; int x=1; int y=10; for(x=1;x<10;i++) { system("cls");//清屏函數(shù) //輸出小球上面的空行 for(i=0;i<x;i++) printf("\n"); //輸出小球左邊的空格 for(j=0;j<y;j++) printf(" "); printf("o");//輸出小球 printf("\n"); return 0; } return 0; }
三、上下彈跳的小球
在上一步代碼的基礎(chǔ)上增加記錄速度的變量 velocity,小球的新位置x=舊位置x+速度velocity。當(dāng)判斷小球到達(dá)上、下邊界時(shí)改變方向,即改變velocity 的正負(fù)號。
#include<stdio.h> #include<stdlib.h> int main() { int i,j; int x=5; int y=10; int height=20; int velocity=1; while(1) { x=x+velocity; system("cls");// 清屏函數(shù) //輸出小球上面的空行 for(i=0;i<x;i++) printf("\n"); //輸出小球左邊的空格 for(j=0;j<y;j++) printf(" ");//輸出小球 printf("o"); printf("\n"); if(x==height) velocity=-velocity; if(x==0) velocity=-velocity; } return 0; }
四、斜著彈跳的小球
下面讓程序更有趣,使小球斜著彈跳,主要思路是增加x、y兩個(gè)方向的速度控制變量velocity_x、velocity_y,初值為1;velocity_x碰到上、下邊界后改變正負(fù)號,velocity_y碰到左、右邊界后改變正負(fù)號。
#include<stdio.h> #include<stdlib.h> int main() { int i,j; int x=0; int y=5; int velocity_x=1; int velocity_y=1; int left=0; int right=20; int top=0; int bottom=10; while(1) { x=x+velocity_x; y=y+velocity_y; system("cls"); // for(i=0;i<x;i++) printf("\n"); // for(j=0;j<y;j++) printf(" "); printf("o"); printf("\n"); if(x==top||x==bottom) velocity_x=-velocity_x; if(y==left||y==right) velocity_y=-velocity_y; } return 0; }
五、控制小球彈跳的速度
以上反彈球的速度可能過快,為了降低反彈球的速度,以使用Sleep 函數(shù)(#include<windows.h>)。比如 sleep(10)表示程序執(zhí)行到此處暫停 10ms,從而控制小球彈跳的速度。
六、完整代碼
#include<stdio.h> #include<stdlib.h> #include<windows.h> int main() { int i,j; int x=0; int y=5; int velocity_x=1; int velocity_y=1; int left=0; int right=20; int top=0; int bottom=10; while(1) { x=x+velocity_x; y=y+velocity_y; system("cls"); // for(i=0;i<x;i++) printf("\n"); // for(j=0;j<y;j++) printf(" "); printf("o"); printf("\n"); Sleep(10); if(x==top||x==bottom) velocity_x=-velocity_x; if(y==left||y==right) velocity_y=-velocity_y; } return 0; }
以上就是C++實(shí)現(xiàn)簡易反彈小球游戲的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于C++反彈小球游戲的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C++棧(stack)的模板類實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了C++棧(stack)的模板類實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06VS2019調(diào)試C語言程序(監(jiān)視操作)的詳細(xì)步驟
在很多時(shí)候我們在寫程序的過程中會(huì)發(fā)現(xiàn)一些非編程錯(cuò)誤的問題,這樣的問題很難直接分辨出來,但是我們可以用調(diào)試了一步一步的模擬程序運(yùn)行的過程,來找出程序的錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于VS2019調(diào)試C語言程序(監(jiān)視操作)的詳細(xì)步驟,需要的朋友可以參考下2022-11-11Linux環(huán)境g++編譯GDAL動(dòng)態(tài)庫操作方法
下面小編就為大家?guī)硪黄狶inux環(huán)境g++編譯GDAL動(dòng)態(tài)庫操作方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05C/C++?實(shí)現(xiàn)動(dòng)態(tài)資源文件釋放的方法
當(dāng)我們開發(fā)Windows應(yīng)用程序時(shí),通常會(huì)涉及到使用資源(Resource)的情況。資源可以包括圖標(biāo)、位圖、字符串等,它們以二進(jìn)制形式嵌入到可執(zhí)行文件中,這篇文章主要介紹了C/C++?實(shí)現(xiàn)動(dòng)態(tài)資源文件釋放,需要的朋友可以參考下2023-12-12淺析內(nèi)存對齊與ANSI C中struct型數(shù)據(jù)的內(nèi)存布局
當(dāng)在C中定義了一個(gè)結(jié)構(gòu)類型時(shí),它的大小是否等于各字段(field)大小之和?編譯器將如何在內(nèi)存中放置這些字段?ANSI C對結(jié)構(gòu)體的內(nèi)存布局有什么要求?而我們的程序又能否依賴這種布局2013-09-09使用C++和Crypto++庫實(shí)現(xiàn)AES加密與解密
在這篇博客中,我們將深入探討如何利用C++和Crypto++庫實(shí)現(xiàn)高效且安全的AES加密與解密機(jī)制,Crypto++是一款高度認(rèn)可的免費(fèi)C++類庫,文中通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-01-01C++實(shí)現(xiàn)LeetCode(647.回文子字符串)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(647.回文子字符串),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07在VC中隱藏控制臺(tái)程序窗口的實(shí)現(xiàn)代碼
大家都知道,當(dāng)編寫一個(gè)win32 console application時(shí),當(dāng)運(yùn)行此類程序的時(shí)候默認(rèn)情況下會(huì)有一個(gè)類似dos窗口的console窗口,但是有的時(shí)候我們只想在程序中運(yùn)行一段功能代碼,不希望顯示這個(gè)console窗口,讓代碼執(zhí)行完畢之后程序自動(dòng)退出2013-04-04