C语言中怎么用easyx实现消砖块游戏
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"C语言中怎么用easyx实现消砖块游戏",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言中怎么用easyx实现消砖块游戏"吧!一
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
软件开发类招标流程控制
云服务器可以搭建传奇服务器吗
播放网络安全手抄报图片
网络技术岗位实习业绩成果报告
客服端服务器连接中断
怎么看数据库表是第几范式
数据库与安全
软件开发的流程图绘制
乡镇春节网络安全应急预案
日常网络安全总结
畅谈网络安全威胁
我们能做什么来维护网络安全
网络技术适合女生吗
济南宏富网络技术有限公司好吗
搭建海外服务器价格
永劫无间服务器紧急抢修
云服务器研发时间
江苏智能刀片服务器直销
计算机网络技术微课教案
软件开发减免流转税
饥荒本地迁移到服务器
数据库的控制语句
重庆 服务器
数据库指标选型
软件开发有限公司尽职调查
网络安全是平安建设的内容
成都中鑫网络技术
数据结构与数据库
滨江网络安全管理员
网络安全诈骗教育