C语言实现反弹球消砖块游戏
本文实例为大家分享了C语言实现反弹球消砖块游戏的具体代码,供大家参考,具体内容如下
1.目标要求:
1.击中上方方块’H’,分数加1
2.下方控制线没有接到小球时,游戏结束
2.C语言代码:
#include#include #include #include /* 《反弹球消砖块》 by:你最珍贵 ——————————— |控制信号: | 左 | 右 | ——————————— | 键盘: | j | l | ——————————— 1.击中上方方块"H",分数加1 2.下方控制线没有接到小球时,游戏结束 */ void HideCursor(){ //隐藏光标位置 ,这个函数复制代码就行 CONSOLE_CURSOR_INFO cursor_info={1,0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); } void gotoxy(int x,int y){ //把光标放在(0,0)位置 ,这个函数复制代码就行 HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(handle,pos); } int IsEnd;//是否结束 int interface_x,interface_y;//界面行数、列数 int block_y;//砖块列位置 int ctrlline_width,ctrlline_left,ctrlline_right;//控制线的左列数,宽度,右列数 int ball_x,ball_y;//小球位置 int ballv_x,ballv_y; //小球行列速度(1为正方向-1为反方向) int scores;//分数 int ballv_num;//小球速度的慢速变量,数值越大越慢 int ballv_num_i;//小球慢速变量值的循环变量 void startup(){ //【数据初始化】 HideCursor();//不显示光标 IsEnd = 0; interface_x = 22; interface_y = 30; block_y = rand()%(interface_y-6)+2; ctrlline_width=8; ctrlline_left=(interface_y-ctrlline_width-2)/2+1+1;//控制线最左列位置 ctrlline_right=ctrlline_left+ctrlline_width-1; ball_x=interface_x-1; ball_y=ctrlline_left+ctrlline_width/2; ballv_x=1; ballv_y=1; scores=0; ballv_num=3; ballv_num_i=1; } void show_begin(){//【初始页面展示】 int i,j; int start=0; char input; while(!start){ gotoxy(0,0);//每次输出页面把鼠标放回(0,0) for(i=1;i<=interface_x/2-4;i++) printf("\n"); for(i=1;i =ctrlline_left&&j<=ctrlline_right)){ //控制线 printf("*"); }else if(i==2&&(j>=block_y&&j<=block_y+4)){ //砖块 printf("H"); }else if(i==ball_x&&j==ball_y){ //反弹球 printf("O"); }else printf(" "); //什么也不是的位置输出空格 } printf("\n"); } } void update_outinput(){ //【与输入无关的更新】 ballv_num_i= (ballv_num_i==ballv_num)?1:ballv_num_i+1;//ballv_num_i一次从{1到ballv_num}循环,当ballv_num_i为最大时才更新球的位置,此目的是减速 if(ballv_num_i==ballv_num){ if(ball_y==2||ball_y==interface_y-1){//判断是否到左右边界 ballv_y *= -1; } if(ball_x==2){//判断是否到上边界 if(ball_y>=block_y&&ball_y<=block_y+4){//判断在上边界有无消去砖块 block_y = rand()%(interface_y-6)+2;//消去则砖块位置重置 scores++;//分数加1 printf("\a");//提示音 } ballv_x *= -1;//不论是否碰砖块,都要反弹 } if(ball_x==interface_x-1){//判断是否下边界接住小球了,若接住反弹,否则结束游戏 if(ball_y>=ctrlline_left && ball_y<=ctrlline_right){ ballv_x *= -1; }else{ IsEnd = 1; } } ball_x += ballv_x; ball_y += ballv_y; } } void update_input(){//【与输入有关的更新】 char input; if(kbhit()){ input = getch(); if( input == "j"){//输入“j”下方控制线左移 ctrlline_left= (ctrlline_left==2)?2:ctrlline_left-1; ctrlline_right= ctrlline_left+ctrlline_width-1; }else if( input == "l"){//输入“l”下方控制线右移 ctrlline_left= (ctrlline_left==interface_y-ctrlline_width)?\ interface_y-ctrlline_width:ctrlline_left+1; ctrlline_right= ctrlline_left+ctrlline_width-1; } } } void show_end(){//【显示失败界面】 system("cls"); printf("\n\n\n\n\n\ngame over!\n\n\n\n\n\n\n\n\n\n\n\n\n"); system("pause");//暂停 system("pause");//暂停 } int main(){ startup(); //数据初始化 show_begin();//初始页面 while(!IsEnd){ //游戏循环执行 show(); // 显示画面 update_outinput(); //与输入无关的更新 update_input(); //与输入有关的更新 } show_end(); //显示失败界面 return 0; }
3.运行结果:
小游戏玩法:
《反弹球消砖块》by:你最珍贵
————————————————————
|控制信号: | 左 | 右 |
————————————————————
| 键盘: | j | l |
————————————————————
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?