C语言中怎么用easyx实现消砖块游戏
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要讲解了"C语言中怎么用easyx实现消砖块游戏",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言中怎么用easyx实现消砖块游戏"吧!一
千家信息网最后更新 2025年01月16日C语言中怎么用easyx实现消砖块游戏
这篇文章主要讲解了"C语言中怎么用easyx实现消砖块游戏",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言中怎么用easyx实现消砖块游戏"吧!
一、最终效果展示
效果图如下:
二、绘制静态的挡板
代码如下:
#include#include #define High 480 //游戏画面尺寸#define Width 640//全局变量int ball_x,ball_y;//小球的坐标int ball_vx,ball_vy;//小球的速度int radius;//小球的半径int bar_x,bar_y;//挡板的中心坐标int bar_high,bar_width;//挡板的高度和宽度int bar_left,bar_right,bar_top,bar_bottom;//挡板的左右上下位置坐标void startup()//数据的初始化{ ball_x=Width/2; ball_y=High/2; ball_vx=1; ball_vy=1; radius=20; bar_high=High/20; bar_width=Width/5; bar_x=Width/2; bar_y=High-bar_high/2; bar_left=bar_x-bar_width/2; bar_right=bar_x+bar_width/2; bar_top=bar_y-bar_high/2; bar_bottom=bar_y+bar_high/2; initgraph(Width,High); BeginBatchDraw();}void clean()//显示画面{ setcolor(BLACK);//绘制黑线,黑色填充的圆 setfillcolor(BLACK); fillcircle(ball_x,ball_y,radius); bar(bar_left,bar_top,bar_right,bar_bottom);//绘制黑色,黑色填充的挡板}void show()//显示画面{ setcolor(YELLOW);//绘制黄线,绿色填充的圆 setfillcolor(GREEN); fillcircle(ball_x,ball_y,radius); bar(bar_left,bar_top,bar_right,bar_bottom);//绘制黄色,绿色填充的挡板 FlushBatchDraw(); Sleep(3);}void updateWithoutInput()//与用户输入无关的更新{ ball_x=ball_x+ball_vx; ball_y=ball_y,ball_vy;//更新小球的坐标 if( (ball_x<=radius)||(ball_x>=Width-radius)) ball_vx=-ball_vx; if( (ball_y<=radius)||(ball_y>=High-radius)) ball_vy=-ball_vy;}void updateWithInput()//与用户输入有关的更新{}void gameover(){ EndBatchDraw(); closegraph();}int main(){ startup();//数据的初始化 while(1) { clean();//把之前绘制的内容清除 updateWithoutInput();//与用户输入无关的更新 updateWithInput();//与用户输入有关的更新 show();//显示新画面 }}
效果图如下:
三、控制挡板
代码如下:
#include#include #define High 480 //游戏画面尺寸#define Width 640//全局变量int ball_x,ball_y;//小球的坐标int ball_vx,ball_vy;//小球的速度int radius;//小球的半径int bar_x,bar_y;//挡板的中心坐标int bar_high,bar_width;//挡板的高度和宽度int bar_left,bar_right,bar_top,bar_bottom;//挡板的左右上下位置坐标void startup()//数据的初始化{ ball_x=Width/2; ball_y=High/2; ball_vx=1; ball_vy=1; radius=20; bar_high=High/20; bar_width=Width/5; bar_x=Width/2; bar_y=High-bar_high/2; bar_left=bar_x-bar_width/2; bar_right=bar_x+bar_width/2; bar_top=bar_y-bar_high/2; bar_bottom=bar_y+bar_high/2; initgraph(Width,High); BeginBatchDraw();}void clean()//显示画面{ setcolor(BLACK);//绘制黑线,黑色填充的圆 setfillcolor(BLACK); fillcircle(ball_x,ball_y,radius); bar(bar_left,bar_top,bar_right,bar_bottom);//绘制黑色,黑色填充的挡板}void show()//显示画面{ setcolor(YELLOW);//绘制黄线,绿色填充的圆 setfillcolor(GREEN); fillcircle(ball_x,ball_y,radius); bar(bar_left,bar_top,bar_right,bar_bottom);//绘制黄色,绿色填充的挡板 FlushBatchDraw(); Sleep(3);}void updateWithoutInput()//与用户输入无关的更新{ //挡板和小球碰撞,小球反弹 if(((ball_y+radius>=bar_top)&&(ball_y+radius bar_top-bar_high/3))) if((ball_x>=bar_left)&&(ball_x<=bar_right)) ball_vy=-ball_vy; ball_x=ball_x+ball_vx; ball_y=ball_y,ball_vy;//更新小球的坐标 if( (ball_x<=radius)||(ball_x>=Width-radius)) ball_vx=-ball_vx; if( (ball_y<=radius)||(ball_y>=High-radius)) ball_vy=-ball_vy;}void updateWithInput()//与用户输入有关的更新{ char input; if(kbhit()) { input=getch(); if(input=='a'&&bar_left>0) { bar_x=bar_x-15;//位置左移 bar_left=bar_x-bar_width/2; bar_right=bar_x+bar_width/2; } if(input=='d'&&bar_right 0) { bar_y=bar_y-15;//位置左移 bar_top=bar_y-bar_high/2; bar_bottom=bar_y+bar_high/2; } if(input=='s'&&bar_bottom 效果图如下:
四、消砖块
代码如下:
#include#include #define High 480 //游戏画面尺寸#define Width 640#define Brick_num 10//全局变量int ball_x,ball_y;//小球的坐标int ball_vx,ball_vy;//小球的速度int radius;//小球的半径int bar_x,bar_y;//挡板的中心坐标int bar_high,bar_width;//挡板的高度和宽度int bar_left,bar_right,bar_top,bar_bottom;//挡板的左右上下位置坐标int isBrickExisted[Brick_num];//每个砖块是否存在,1为存在,0为没有了int brick_high,brick_width;//每个砖块的高度和宽度void startup()//数据的初始化{ ball_x=Width/2; ball_y=High/2; ball_vx=1; ball_vy=1; radius=20; bar_high=High/20; bar_width=Width/5; bar_x=Width/2; bar_y=High-bar_high/2; bar_left=bar_x-bar_width/2; bar_right=bar_x+bar_width/2; bar_top=bar_y-bar_high/2; bar_bottom=bar_y+bar_high/2; brick_width=Width/Brick_num; brick_high=High/Brick_num; int i; for(i=0;i =bar_top)&&(ball_y+radius bar_top-bar_high/3))) if((ball_x>=bar_left)&&(ball_x<=bar_right)) ball_vy=-ball_vy; ball_x=ball_x+ball_vx; ball_y=ball_y+ball_vy;//更新小球的坐标 //小球和边界碰撞 if( (ball_x<=radius)||(ball_x>=Width-radius)) ball_vx=-ball_vx; if( (ball_y<=radius)||(ball_y>=High-radius)) ball_vy=-ball_vy; //判断小球是否和某个砖块碰撞 int i,brick_left,brick_right,brick_top,brick_bottom; for(i=0;i =brick_left)&&(ball_x<= brick_right)) { isBrickExisted[i]=0; ball_vy=-ball_vy; } } }}void updateWithInput()//与用户输入有关的更新{ char input; if(kbhit()) { input=getch(); if(input=='a'&&bar_left>0) { bar_x=bar_x-15;//位置左移 bar_left=bar_x-bar_width/2; bar_right=bar_x+bar_width/2; } if(input=='d'&&bar_right 效果图如下:
五、鼠标交互
先看一个关于鼠标交互的实例
#include#include int main(void){ initgraph(640,480);//初始化图形窗口 MOUSEMSG m;//定义鼠标消息 while(1) { m=GetMouseMsg();//获取一条鼠标消息 if(m.uMsg==WM_MOUSEMOVE) { putpixel(m.x,m.y,WHITE);//鼠标移动的时候画小白点 } else if(m.uMsg==WM_LBUTTONDOWN) { rectangle(m.x-5,m.y-5,m.x+5,m.y+5); //鼠标左键按下时在鼠标位置画一个方块 } else if(m.uMsg==WM_RBUTTONUP) { circle(m.x,m.y,10); //鼠标右键按下时在鼠标位置画一个圆 } } return 0;} 用鼠标控制挡板移动,按鼠标左键初始化小球位置
代码如下:
#include#include #define High 480 //游戏画面尺寸#define Width 640#define Brick_num 10//全局变量int ball_x,ball_y;//小球的坐标int ball_vx,ball_vy;//小球的速度int radius;//小球的半径int bar_x,bar_y;//挡板的中心坐标int bar_high,bar_width;//挡板的高度和宽度int bar_left,bar_right,bar_top,bar_bottom;//挡板的左右上下位置坐标int isBrickExisted[Brick_num];//每个砖块是否存在,1为存在,0为没有了int brick_high,brick_width;//每个砖块的高度和宽度void startup()//数据的初始化{ ball_x=Width/2; ball_y=High/2; ball_vx=1; ball_vy=1; radius=20; bar_high=High/20; bar_width=Width/5; bar_x=Width/2; bar_y=High-bar_high/2; bar_left=bar_x-bar_width/2; bar_right=bar_x+bar_width/2; bar_top=bar_y-bar_high/2; bar_bottom=bar_y+bar_high/2; brick_width=Width/Brick_num; brick_high=High/Brick_num; int i; for(i=0;i =bar_top)&&(ball_y+radius bar_top-bar_high/3))) if((ball_x>=bar_left)&&(ball_x<=bar_right)) ball_vy=-ball_vy; ball_x=ball_x+ball_vx; ball_y=ball_y+ball_vy;//更新小球的坐标 //小球和边界碰撞 if( (ball_x<=radius)||(ball_x>=Width-radius)) ball_vx=-ball_vx; if( (ball_y<=radius)||(ball_y>=High-radius)) ball_vy=-ball_vy; //判断小球是否和某个砖块碰撞 int i,brick_left,brick_right,brick_top,brick_bottom; for(i=0;i =brick_left)&&(ball_x<= brick_right)) { isBrickExisted[i]=0; ball_vy=-ball_vy; } } }}void updateWithInput()//与用户输入有关的更新{ /*char input; if(kbhit()) { input=getch(); if(input=='a'&&bar_left>0) { bar_x=bar_x-15;//位置左移 bar_left=bar_x-bar_width/2; bar_right=bar_x+bar_width/2; } if(input=='d'&&bar_right 效果图如下:
感谢各位的阅读,以上就是"C语言中怎么用easyx实现消砖块游戏"的内容了,经过本文的学习后,相信大家对C语言中怎么用easyx实现消砖块游戏这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
挡板
小球
坐标
画面
更新
鼠标
黑色
砖块
位置
用户
输入
数据
绿色
内容
宽度
效果
高度
有关
效果图
碰撞
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
医疗机构医保结算电脑网络安全
我的世界如何搭建一台服务器
服务器集成显卡
明日之后的服务器能删除吗
idc中国gpu服务器排名第一
数据库节点什么意思
简单吉他谱软件开发
数据库两张表的数据对比
铸牢网络安全基石
软件开发bug要求
数据库的数据模型包括哪三个要素
网络安全法的个人看法
关于网络安全的新词汇
pom创建数据库连接文件
黄山市网络安全法专题培训会
平凉展厅互动软件开发
网络安全法你get了吗
方舟服务器新手在哪建家安全
数据库技术大事记
6g网络技术卫星
外部维修人员网络安全责任书
服务器大机和小机区别
phl软件开发
服务器的硬盘怎么重新扫描
香港云服务器建站
房友本地数据库连接失败
jpa实时更新数据库
襄阳中嘉网络技术有限公司
c 数据库连接账号密码
智睿学校网站 数据库