我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言中怎么用easyx实现消砖块游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C语言中怎么用easyx实现消砖块游戏

这篇文章主要讲解了“C语言中怎么用easyx实现消砖块游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中怎么用easyx实现消砖块游戏”吧!

一、最终效果展示

效果图如下:

C语言中怎么用easyx实现消砖块游戏

二、绘制静态的挡板

C语言中怎么用easyx实现消砖块游戏

代码如下:

#include<conio.h>#include<graphics.h>#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();//显示新画面    }}

效果图如下:

C语言中怎么用easyx实现消砖块游戏

三、控制挡板

代码如下:

#include<conio.h>#include<graphics.h>#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_bottom-bar_high/3))        ||((ball_y-radius<=bar_bottom)&&(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<Width)        {            bar_x=bar_x+15;//位置左移            bar_left=bar_x-bar_width/2;            bar_right=bar_x+bar_width/2;        }        if(input=='w'&&bar_top>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<High)        {            bar_y=bar_y+15;//位置右移            bar_top=bar_y-bar_high/2;            bar_bottom=bar_y+bar_high/2;        }    }}void gameover(){    EndBatchDraw();    closegraph();}int main(){    startup();//数据的初始化    while(1)    {        clean();//把之前绘制的内容清除        updateWithoutInput();//与用户输入无关的更新        updateWithInput();//与用户输入有关的更新        show();//显示新画面    }}

效果图如下:

C语言中怎么用easyx实现消砖块游戏

四、消砖块

C语言中怎么用easyx实现消砖块游戏

代码如下:

#include<conio.h>#include<graphics.h>#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<Brick_num;i++)        isBrickExisted[i]=1;    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);//绘制黑色,黑色填充的挡板    int i,brick_left,brick_right,brick_top,brick_bottom;    for(i=0;i<Brick_num;i++)    {        brick_left=i*brick_width;        brick_right=brick_left+brick_width;        brick_top=0;        brick_bottom=brick_high;        if(!isBrickExisted[i])//砖块没有了,绘制黑色            fillrectangle(brick_left,brick_top,brick_right,brick_bottom);    }}void show()//显示画面{    setcolor(YELLOW);//绘制黄线,绿色填充的圆    setfillcolor(GREEN);    fillcircle(ball_x,ball_y,radius);    bar(bar_left,bar_top,bar_right,bar_bottom);//绘制黄色,绿色填充的挡板    int i,brick_left,brick_right,brick_top,brick_bottom;    for(i=0;i<Brick_num;i++)    {        brick_left=i*brick_width;        brick_right=brick_left+brick_width;        brick_top=0;        brick_bottom=brick_high;        if(isBrickExisted[i])//砖块存在,绘制砖块        {            setcolor(WHITE);            setfillcolor(RED);            fillrectangle(brick_left,brick_top,brick_right,brick_bottom);//绘制砖块        }    }    FlushBatchDraw();    Sleep(3);}void updateWithoutInput()//与用户输入无关的更新{    //挡板和小球碰撞,小球反弹    if(((ball_y+radius>=bar_top)&&(ball_y+radius<bar_bottom-bar_high/3))        ||((ball_y-radius<=bar_bottom)&&(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_num;i++)    {        if(isBrickExisted[i])//砖块存在才判断        {            brick_left=i*brick_width;            brick_right=brick_left+brick_width;            brick_bottom=brick_high;            if((ball_y==brick_bottom+radius)&&(ball_x>=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<Width)        {            bar_x=bar_x+15;//位置左移            bar_left=bar_x-bar_width/2;            bar_right=bar_x+bar_width/2;        }    }}void gameover(){    EndBatchDraw();    closegraph();}int main(){    startup();//数据的初始化    while(1)    {        clean();//把之前绘制的内容清除        updateWithoutInput();//与用户输入无关的更新        updateWithInput();//与用户输入有关的更新        show();//显示新画面    }}

效果图如下:

C语言中怎么用easyx实现消砖块游戏

五、鼠标交互

C语言中怎么用easyx实现消砖块游戏

先看一个关于鼠标交互的实例

#include<graphics.h>#include<conio.h>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<conio.h>#include<graphics.h>#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<Brick_num;i++)        isBrickExisted[i]=1;    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);//绘制黑色,黑色填充的挡板    int i,brick_left,brick_right,brick_top,brick_bottom;    for(i=0;i<Brick_num;i++)    {        brick_left=i*brick_width;        brick_right=brick_left+brick_width;        brick_top=0;        brick_bottom=brick_high;        if(!isBrickExisted[i])//砖块没有了,绘制黑色            fillrectangle(brick_left,brick_top,brick_right,brick_bottom);    }}void show()//显示画面{    setcolor(YELLOW);//绘制黄线,绿色填充的圆    setfillcolor(GREEN);    fillcircle(ball_x,ball_y,radius);    bar(bar_left,bar_top,bar_right,bar_bottom);//绘制黄色,绿色填充的挡板    int i,brick_left,brick_right,brick_top,brick_bottom;    for(i=0;i<Brick_num;i++)    {        brick_left=i*brick_width;        brick_right=brick_left+brick_width;        brick_top=0;        brick_bottom=brick_high;        if(isBrickExisted[i])//砖块存在,绘制砖块        {            setcolor(WHITE);            setfillcolor(RED);            fillrectangle(brick_left,brick_top,brick_right,brick_bottom);//绘制砖块        }    }    FlushBatchDraw();    Sleep(3);}void updateWithoutInput()//与用户输入无关的更新{    //挡板和小球碰撞,小球反弹    if(((ball_y+radius>=bar_top)&&(ball_y+radius<bar_bottom-bar_high/3))        ||((ball_y-radius<=bar_bottom)&&(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_num;i++)    {        if(isBrickExisted[i])//砖块存在才判断        {            brick_left=i*brick_width;            brick_right=brick_left+brick_width;            brick_bottom=brick_high;            if((ball_y==brick_bottom+radius)&&(ball_x>=brick_left)&&(ball_x<=                brick_right))            {                isBrickExisted[i]=0;                ball_vy=-ball_vy;            }        }    }}void updateWithInput()//与用户输入有关的更新{        MOUSEMSG m;//定义鼠标信息    if(MouseHit())//这个函数用于检测当前是否有鼠标消息    {        m=GetMouseMsg();//获取一条鼠标消息        if(m.uMsg==WM_MOUSEMOVE)        {            //挡板的位置等于鼠标所在的位置            bar_x=m.x;            bar_y=m.y;            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;        }        else if(m.uMsg==WM_LBUTTONDOWN)        {            ball_x=bar_x;//初始化小球的位置为挡板上面中心            ball_y=bar_top-radius-3;        }    }}void gameover(){    EndBatchDraw();    closegraph();}int main(){    startup();//数据的初始化    while(1)    {        clean();//把之前绘制的内容清除        updateWithoutInput();//与用户输入无关的更新        updateWithInput();//与用户输入有关的更新        show();//显示新画面    }}

效果图如下:

C语言中怎么用easyx实现消砖块游戏

感谢各位的阅读,以上就是“C语言中怎么用easyx实现消砖块游戏”的内容了,经过本文的学习后,相信大家对C语言中怎么用easyx实现消砖块游戏这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C语言中怎么用easyx实现消砖块游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C语言中怎么用easyx实现消砖块游戏

这篇文章主要讲解了“C语言中怎么用easyx实现消砖块游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言中怎么用easyx实现消砖块游戏”吧!一、最终效果展示效果图如下:二、绘制静态的
2023-06-30

C++怎么使用easyx实现打砖块游戏

这篇文章主要介绍“C++怎么使用easyx实现打砖块游戏”,在日常操作中,相信很多人在C++怎么使用easyx实现打砖块游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么使用easyx实现打砖块游戏
2023-06-30

C语言怎么实现打砖块游戏

这篇文章主要介绍“C语言怎么实现打砖块游戏”,在日常操作中,相信很多人在C语言怎么实现打砖块游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言怎么实现打砖块游戏”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-30

怎么用C语言实现小游戏打砖块

这篇文章主要讲解了“怎么用C语言实现小游戏打砖块”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C语言实现小游戏打砖块”吧!游戏目标:消除所有的方块即可过关。操作指南:游戏中使用键盘方向
2023-06-25

C语言中怎么用函数实现反弹球消砖块

本篇内容介绍了“C语言中怎么用函数实现反弹球消砖块”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、项目描述和最终的成果展示这是在上一次弹跳
2023-06-30

C语言如何实现控制台打砖块小游戏

今天小编给大家分享一下C语言如何实现控制台打砖块小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。这个问题是我在领扣上面看
2023-06-30

C语言怎么用数组实现反弹球消砖块

本文小编为大家详细介绍“C语言怎么用数组实现反弹球消砖块”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言怎么用数组实现反弹球消砖块”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、效果展示:二、代码如下:#
2023-06-30

怎么用python实现打砖块小游戏

这篇文章主要介绍了怎么用python实现打砖块小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用python实现打砖块小游戏文章都会有所收获,下面我们一起来看看吧。开发益智的打砖块小游戏,你可以试一下能
2023-06-30

怎么用vue3实现打砖块小游戏

这篇文章主要介绍“怎么用vue3实现打砖块小游戏”,在日常操作中,相信很多人在怎么用vue3实现打砖块小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用vue3实现打砖块小游戏”的疑惑有所帮助!接下来
2023-07-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录