C++實現(xiàn)簡易反彈小球游戲的示例代碼
前言
我們利用printf 函數(shù)實現(xiàn)一個在屏幕上彈跳的小球,如圖所示。彈跳的小球游戲比較簡單、容易入門,也是反彈球消磚塊、接金幣、臺球等很多游戲的基礎。
完成游戲前需要掌握的語法知識:標識符、變量、常量、運算符與表達式,以及 printf、scanf、if-else、while、for 語句的用法。
正文部分我們會逐步進行講解,前一部分是后一部分的基礎,大家不要跳過閱讀。
一、顯示靜止的小球
首先利用 printf 函數(shù)在屏幕坐標(x,y)處顯示一個靜止的小球字符'o',注意屏幕坐標系的原點在左上角,如圖

#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;
} 二、小球下落
改變小球的坐標變量,即讓小球的i坐標增加,從而讓小球下落。在每次顯示之前使用了清屏函數(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;
}三、上下彈跳的小球
在上一步代碼的基礎上增加記錄速度的變量 velocity,小球的新位置x=舊位置x+速度velocity。當判斷小球到達上、下邊界時改變方向,即改變velocity 的正負號。
#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兩個方向的速度控制變量velocity_x、velocity_y,初值為1;velocity_x碰到上、下邊界后改變正負號,velocity_y碰到左、右邊界后改變正負號。
#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++實現(xiàn)簡易反彈小球游戲的示例代碼的詳細內(nèi)容,更多關于C++反彈小球游戲的資料請關注腳本之家其它相關文章!
相關文章
C語言數(shù)據(jù)結構之判斷循環(huán)鏈表空與滿
這篇文章主要介紹了C語言數(shù)據(jù)結構之判斷循環(huán)鏈表空與滿的相關資料,希望通過本文能幫助到大家,讓大家掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
QT委托代理機制之Model?View?Delegate使用方法詳解
這篇文章主要介紹了QT委托代理機制之Model?View?Delegate的使用方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
C語言詳解strcmp函數(shù)的分析及實現(xiàn)
strcmp函數(shù)語法為“int strcmp(char *str1,char *str2)”,其作用是比較字符串str1和str2是否相同,如果相同則返回0,如果不同,前者大于后者則返回1,否則返回-12022-05-05
C語言的isatty函數(shù)和ttyname函數(shù)以及sendmsg函數(shù)用法
這篇文章主要介紹了C語言的isatty函數(shù)和ttyname函數(shù)以及sendmsg函數(shù)用法,是C語言入門學習中的基礎知識,需要的朋友可以參考下2015-09-09

