本文为大家分享了C语言反弹球游戏的具体代码,供大家参考,具体内容如下

这是利用函数写的C语言小游戏,用来检验自己的学习成果

反弹球的实现主要有几个子函数组成

问题也在于如何实现小球的下落,以及碰撞得分等情况

#include

#include

#include

//定义全局变量

int high,width; //游戏边界

int ball_x,ball_y; //小球位置

int ball_vx,ball_vy; //小球速度

int position_x,position_y; //挡板中心坐标

int radius; //挡板半径

int left,right; //键盘左右边界

int ball_number; //反弹小球次数

int block_x,block_y; //方块的位置

int score; //消掉方块的个数

void HideCursor() //隐藏光标

{

CONSOLE_CURSOR_INFO cursor_info = {1, 0};

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

}

void gotoxy(int x,int y) //光标移动到(x,y)位置,清屏函数

{

HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

COORD pos;

pos.X = x;

pos.Y = y;

SetConsoleCursorPosition(handle,pos);

}

void startup() //数据初始化

{

high=18; //定义边界

width=26;

ball_x=0; //小球坐标

ball_y=width/2;

ball_vx=1; //小球速度方向

ball_vy=1;

position_x=high-1; //挡板中心坐标

position_y=width/2;

radius=5; //挡板半径

left=position_y-radius; //键盘边界

right=position_y+radius;

block_x=0; //方块位置

block_y=width/2-4;

ball_number=0; //反弹小球个数

score=0; //消掉小球个数

HideCursor();

}

void show() //显示界面

{

gotoxy(0,0);

int i,j;

for(i=0;i<=high;i++)

{

for(j=0;j<=width;j++)

{

if((i==ball_x) && (j==ball_y)) //输出小球

printf("0");

else if((i==block_x)&& (j==block_y)) //输出滑块 //输出下边界

printf("@");

else if(i==high) //输出下边界

printf("-");

else if(j==width) //输出右边界

printf("|");

else if((i==high-1)&&(j>left)&&(j

printf("*");

else printf(" ");

}

printf("n");

}

printf("反弹小球次数:%dn",ball_number);

printf("消掉小球个数:%dn",score);

}

void updateWithoutInpute() //与用户输入无关的更新

{

if(ball_x==position_x-1) //小球撞到挡板

{

if((ball_y>=left)&&(ball_y<=right))

{

ball_number++;

//printf("a");

}

else

{

printf("游戏失败n");

system("pause");

exit(0);

}

}

ball_x = ball_x + ball_vx; //小球向速度方向移动

ball_y = ball_y + ball_vy;

if((ball_x==0) || (ball_x==high-2)) //小球撞到上下边界

ball_vx=-ball_vx;

if((ball_y==0) || (ball_y==width-1)) //小球撞到左右边界

ball_vy=-ball_vy;

if((block_x==ball_x) && (block_y==ball_y)) //小球撞到滑块

{

block_y=rand()%width-1;

score++;

}

Sleep(120);

}

void updateWithInpute() //与用户输入有关的更新

{

char input;

if(kbhit())

{

input=getch();

if((input=='a')&&(left>=0))

{

position_y--;

left=position_y-radius; //键盘边界

right=position_y+radius;

}

if((input=='d')&&(right

{

position_y++;

left=position_y-radius; //键盘边界

right=position_y+radius;

}

}

}

int main()

{

system("color 2f"); //改变控制台颜色

startup();

while(1)

{

show(); //显示界面

updateWithoutInpute(); //与用户输入无关的更新

updateWithInpute(); //与用户输入有关的更新

}

}

反弹球c语言小游戏编程,C语言实现反弹球小游戏相关推荐

  1. 视频教程-C++游戏编程实例精讲--3D射击游戏作弊-C/C++

    C++游戏编程实例精讲--3D射击游戏作弊 80后,游戏作弊工程师,从事C++开发14年,擅长语言:C,C++ 领域:服务器开发,精通MFC,STL,Boost,熟悉TCP/IP协议,熟练运用IOCP ...

  2. python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...

  3. 3D游戏编程:介绍一款功能游戏

    3D游戏编程:介绍一款功能游戏 功能游戏简介 介绍游戏:Single N-back 游戏简介 设计元素分析 社会贡献与价值 功能游戏简介 功能游戏(Serious Game)可被理解为严肃性游戏或应用 ...

  4. 掌握了c语言就能够编程,C语言编程学习-C语言编程学习app-最火手机站

    C语言编程学习是一款优质的学习软件,能够帮助用户更好的学习C语言,让用户在线就能够获得更多的帮助,快速的解决你的学习需求,增加你的使用体验,进入平台就能够获得优质的学习服务,更好的解决用户的学习问题; ...

  5. c语言 源程序代码,编程(C语言源程序代码)

    编程(C语言源程序代码) 已知 S=1+1/(1+2)+1/(1+2+3)+-+1/(1+2+3+-+N) ,当N的值为50时,求S的值. 要求:按四舍五入的方式精确到小数点后第四位. #includ ...

  6. jdy40程序C语言,lr脚本编程C语言.docx

    lr脚本编程C语言.docx 1.define COUNT 100define SALARY 4000Actionint total;totalCOUNT*SALARY;lr_output_messa ...

  7. oracle 小游戏编程,C++实现扫雷经典小游戏

    用C++复现经典扫雷,供大家参考,具体内容如下 主要是dfs实现打开一片的操作,数字带有颜色,很真实. windows扫雷中鼠标左右键同时按也实现了,即试探. 先上图,详见下面代码: 代码中有详细注释 ...

  8. 游戏编程入门(1):游戏专业概论

    <游戏专业概论> 陈洪,任科,李华杰编著 清华大学出版社 游戏的类型-按内容架构分类 角色扮演类游戏RPG 角色扮演类游戏(RPG,Role Playing Game)又可以分为以下几种. ...

  9. python游戏编程网课_Python菜鸟快乐游戏编程_pygame(1)

    作者Toby, 持牌照金融股份公司模型验证专家,国内最大医药数据中心担任过数据库负责人.擅长python 机器学习,应用于医疗,英语,金融风控领域. 课程介绍: 编程正在逐步改变世界,程序员不是搬砖的 ...

  10. JAVA游戏编程之二----j2me MIDlet 手机游戏入门开发--贪吃蛇

    作者:雷神 QQ:38929568 QQ群:28048051JAVA游戏编程(满) 28047782(将满) 与前一款扫雷比较,这个游戏多了一个 类,用来显示动画,也是蛇要吃的物品类, 也有了代码包, ...

最新文章

  1. Mycat连接数据库之后导致表名全小写的问题分析研究
  2. STL源码剖析(四)
  3. 正则表达式 去除连续空白 + 获取url +分割url + 获取图片
  4. 又一个时代结束了!Adobe宣布在2020年彻底停止Flash更新
  5. Management reporter 2012 与AX 2012
  6. mysql .myi权限_mysql之引擎、Explain、权限详解
  7. 去掉windows換行符^M
  8. Eclipse------新建文件时没有JSP File解决方法
  9. 巧用「打印」功能实现PDF单页提取
  10. 将项目发布到Git@OSC
  11. 【诚邀】ZStack新品战略发布会4月16号如约开启
  12. 瑞尔森大学计算机网络专业怎么样,瑞尔森大学怎么样?
  13. 【每日一题】 643. 子数组最大平均数 I
  14. OSPF —— 多区域部署 + ABR + ASBR + 路由重分发
  15. Linux系统中社保卡阅读
  16. 2020年11月4日
  17. Kyligence 春季论坛成功举办,助力企业构建数字化管理新体系
  18. [HDU5873] [2016亚洲区域赛大连网络赛] Football Games [构造][兰道定理]
  19. 引用量超6000的语义分割经典论文DeepLabv3解读
  20. android图片异步加载图片,Android 异步加载图片分析总结

热门文章

  1. vue 引入 icon(阿里图标库)
  2. Android着色状态栏实践
  3. 台式电脑win8系统怎么换成win7?
  4. 名字、手机号、身份证中间 ****的用法
  5. 人工智能时代对隐私的思考
  6. 小白应该怎么学java?
  7. android代码开启悬浮窗权限,Android 悬浮窗权限校验(示例代码)
  8. 数据结构——树形结构
  9. 基于JAVA在线毕设选题系统计算机毕业设计源码+系统+lw文档+部署
  10. 镜像下载boot.iso和dvd1.iso的区别;dnf:找不到命令;yum和dnf的区别;CentOS Stream和Linux的区别;dnf: command not found