这个只要安装了easyx图形库就可以直接复制运行。

easyx的安装可以参考这个:

easyx的安装与基于easyx的C语言扫雷小游戏_makabaka12138的博客-CSDN博客

这个游戏也比较粗糙,只做了个大概,有感兴趣的可以自己改进一下。

喜欢的点个赞吧。

展示:

#include <stdio.h>
#include <stdbool.h>
#include <graphics.h>  //easyX  库
#include <conio.h>//砖块宽
#define  ZK_WIDTH   120
//砖块高
#define  ZK_HEIGHT  40//行数
#define  ZK_ROWS   4
//列数
#define  ZK_COLS   5//宽  60  高  20
//窗口高
#define WINDOW_HEIGHT 600
//窗口宽
#define WINDOW_WIDTH  (ZK_WIDTH*ZK_COLS)
//球的半径
#define RADIUS  10
//板子宽
#define BZ_WIDTH  300
//板子高
#define BZ_HEIGHT 20//全局变量   0 false 存在    1 true 不存在
bool zk[ZK_ROWS][ZK_COLS] = { 0 };
//球的圆心坐标
int ball_x, ball_y;
//板子左上角那个点的坐标
int bz_x, bz_y;
//球的方向向量    3 右 -3 左     -3上  3下
int ball_xfx=3, ball_yfx=-3;//游戏是否继续
bool isContinue = true;//画板子
void drawBZ();
//画球
void drawBall();//打印一块砖
// x y  下标
void drawZK(int x, int y);//显示所有的砖
void drawAllZK();//游戏的所有显示
void drawGame();//球移动
void ballMove();
//碰撞检测
void check();
//控制    是否按键  根据按键来处理
void ctolGame();int main(){initgraph(WINDOW_WIDTH, WINDOW_HEIGHT);//板子的初始坐标bz_x = (WINDOW_WIDTH - BZ_WIDTH) / 2;bz_y = WINDOW_HEIGHT - BZ_HEIGHT;//球心初始坐标ball_x = WINDOW_WIDTH / 2;ball_y = WINDOW_HEIGHT - BZ_HEIGHT - RADIUS;while (isContinue){drawGame();ballMove();ctolGame();Sleep(10);//帧率100   1秒钟图片切换张数  16以上  100以下}settextcolor(RED);LOGFONT font = { 0 };font.lfHeight = 40;font.lfWidth = 20;settextstyle(&font);outtextxy(WINDOW_WIDTH / 2 - 100, WINDOW_HEIGHT / 2,L"Game Over!!!");/*Sleep(2000);cleardevice();//清屏zk[1][1] = zk[2][2] = 1;drawAllZK();*/while (1);return 0;
}//球移动
void ballMove(){ball_x += ball_xfx;ball_y += ball_yfx;
}//碰撞检测
void check(){//检测球是否撞上右边沿if ((ball_xfx > 0) && //球往右边走(ball_x >= (WINDOW_WIDTH - RADIUS))){//撞上了右边沿ball_xfx = -3;}//检测球是否撞上左边沿if ((ball_xfx < 0) && //球往左边走(ball_x <= RADIUS)){//撞上了左边沿ball_xfx = 3;}//检测球是否撞上上边沿if ((ball_yfx < 0) && //球往上边走(ball_y <= RADIUS)){//撞上了上边沿ball_yfx = 3;}//检测球是否撞上下边沿if ((ball_yfx > 0) && //球往下边走(ball_y >= (WINDOW_HEIGHT-RADIUS) )){//撞上了下边沿//ball_yfx = -3;isContinue = false;}//检测球是否撞上板子if ((ball_yfx > 0) &&(ball_y >= (bz_y - RADIUS)) &&//球y坐标(ball_x >= bz_x) &&(ball_x <= (bz_x + BZ_WIDTH))){ball_yfx = -3;}//检测撞砖块for (int i = 0; i < ZK_ROWS; i++){for (int j = 0; j < ZK_COLS; j++){//  zk[i][j]      x:j*ZK_WIDTH    y:i*ZK_HEIGHT//左上角坐标 (j*ZK_WIDTH,i*ZK_HEIGHT)   //右下角坐标(j*ZK_WIDTH+ZK_WIDTH,i*ZK_HEIGHT+ZK_HEIGHT)if (3 == ball_xfx){//检测从左往右撞/*if ((false == zk[i][j])           //砖块存在&& (ball_x > (j*ZK_WIDTH-RADIUS) )    //左边边界&& (ball_y>i*ZK_HEIGHT)//上边边界&& (ball_y < (i*ZK_HEIGHT + ZK_HEIGHT))//下边边界){zk[i][j] = true;//把砖块打掉ball_xfx = -3;}*/}if (-3 == ball_xfx){//检测从右往左撞/*if ((false == zk[i][j])           //砖块存在&& (ball_x <(j*ZK_WIDTH + ZK_WIDTH + RADIUS))  //右边边界&& (ball_y>i*ZK_HEIGHT)//上边边界&& (ball_y < (i*ZK_HEIGHT + ZK_HEIGHT))//下边边界){zk[i][j] = true;//把砖块打掉ball_xfx = 3;}*/}if (-3 == ball_yfx){//检测从下往上撞if ((false == zk[i][j])           //砖块存在&& (ball_x > j*ZK_WIDTH)    //左边边界&& (ball_x < (j*ZK_WIDTH + ZK_WIDTH))//右边边界&& (ball_y < (i*ZK_HEIGHT + ZK_HEIGHT + RADIUS))//上边边界){zk[i][j] = true;//把砖块打掉ball_yfx = 3;}}if (3 == ball_yfx){//检测从上往下撞/*if ((false == zk[i][j])            //砖块存在&& (ball_x > j*ZK_WIDTH)    //左边边界&& (ball_x < (j*ZK_WIDTH + ZK_WIDTH))//右边边界&& (ball_y > (i*ZK_HEIGHT - RADIUS))//上边边界){zk[i][j] = true;//把砖块打掉ball_yfx = -3;}*/}}}
}
//控制    是否按键  根据按键来处理
void ctolGame(){check();//不管有没有按键,都要碰撞检测int ch;if (true == _kbhit()){//检测是否有按键ch = _getch();//获取按键的值printf("ch:%d\n", ch);switch (ch){case 'a':case 'A':case 75:bz_x -= 5;break;case 'd':case 'D':case 77:bz_x += 5;break;}}
}//游戏的所有显示
void drawGame(){BeginBatchDraw();//绘图前    防闪//清屏cleardevice();drawAllZK();drawBZ();drawBall();EndBatchDraw();//绘图后    防闪
}//打印一块砖
// x y  下标
void drawZK(int x, int y){if (0 == zk[y][x]){setlinecolor(RED);setfillcolor(GREEN);fillrectangle(x * ZK_WIDTH, y * ZK_HEIGHT,x * ZK_WIDTH + ZK_WIDTH, y * ZK_HEIGHT + ZK_HEIGHT);}/*if(1 == zk[y][x]) return;setlinecolor(RED);setfillcolor(GREEN);fillrectangle(x * ZK_WIDTH, y * ZK_HEIGHT,x * ZK_WIDTH + ZK_WIDTH, y * ZK_HEIGHT + ZK_HEIGHT);*/
}//显示所有的砖
void drawAllZK(){for (int i = 0; i < ZK_ROWS; i++){//5行for (int j = 0; j < ZK_COLS; j++){//30列//if (0 == zk[i][j])drawZK(j, i);}}
}//画板子
void drawBZ(){setlinecolor(YELLOW);setfillcolor(YELLOW);fillrectangle(bz_x, bz_y, bz_x + BZ_WIDTH, bz_y + BZ_HEIGHT);
}
//画球
void drawBall(){setlinecolor(BLUE);setfillcolor(RED);fillcircle(ball_x, ball_y, RADIUS);
}

简易版------打砖块相关推荐

  1. node.js——麻将算法(六)简易版麻将出牌AI1.0

    普通麻将的出牌AI如果不是要求特别高的话,其实蛮容易实现的,毕竟大多数人打牌都只是看自己的手牌. 所以作为简易版的AI,出牌的策略只要奔着胡牌去就可以了.我们能想到的就是把相邻或相同的牌凑到一起,把单 ...

  2. 从封装函数到实现简易版自用jQuery (一)

    温馨提示 本文阅读对象: 对 JavaScript 有一定的了解,如果你没有学过或者忘记 JavaScript 某些操作,请看 阮一峰 JavaScript 教程 . 导语 DOM 有许多 API , ...

  3. 利用python实现简易版的贪吃蛇游戏(面向python小白)

    前言 这篇文章主要给大家介绍了关于如何利用python实现简易版的贪吃蛇游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学 ...

  4. python车辆管理系统_Python简易版停车管理系统

    本文实例为大家分享了Python简易版停车管理系统的具体代码,供大家参考,具体内容如下 import time # 最大停车数 max_car = 100 # 当前停车数,初始为0 cur_car = ...

  5. 用Java写一个植物大战僵尸简易版!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://urlify.cn/byeEj ...

  6. python实现简易版成绩管理系统_Python 实现简易版成绩管理系统!

    上一次,公众号介绍了如何使用 Python 实现单链表,下面让我们一探单链表的简单应用:在命令行,实现简易版成绩管理系统. 这次的简易版成绩管理系统,主要有六大功能:增加学生信息.删除学生信息.修改学 ...

  7. python成绩管理系统界面-python实现简易版学生成绩管理系统

    300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下 使用链表来实现 class Node(object): def __init__(self, data, pointer ...

  8. DFiddler:A HTTP Packets Listener一个简易版的手机端的Fiddler。

    Diddler A HTTP Packets Listener一个简易版的手机端的Fiddler. Android系统需要Root权限. PIC_20140121_220503_617.jpeg PI ...

  9. 肝一波 ~ 手写一个简易版的Mybatis,带你深入领略它的魅力!

    零.准备工作 <dependencies><dependency><groupId>mysql</groupId><artifactId>m ...

最新文章

  1. Quarkus:一个Kubernetes原生Java框架
  2. Windows Server 2012 R2工作文件夹⑤:创建工作文件夹
  3. 为什么说比特币的交易属性优于储值属性
  4. 区块链常用架构是什么?它和保险业又如何结合?
  5. 中国无烟煤市场需求规模与未来发展形势分析报告2022版
  6. 纪中C组模拟赛总结(2019.7.5)
  7. android抽屉屏幕右滑,android - Android - 使滑动抽屉从左向右滑动 - 堆栈内存溢出...
  8. 【Python爬虫】Beautiful Soup库入门
  9. uefi引导linux_使用UEFI双重引导Windows和Linux
  10. “黑客帝国”装B特效,不分linux版本
  11. android checkboxpreference属性,Android CheckBoxPreference Default Value
  12. Python批量转换png图片为ico
  13. vue echarts饼状统计
  14. php 身份证格式校验,年龄计算
  15. re正则表达式必备基础知识
  16. 干货 | “深耕内容”背景下,携程如何做景酒优质内容的挖掘
  17. 【洛谷1337】[JSOI2004] 吊打XXX(模拟退火经典题)
  18. 主题模型分析漏洞趋势
  19. 牛客网 2018校招真题 摩拜 排序次数
  20. 【学习计算机组成原理】浮点数的加减运算

热门文章

  1. 使用MPLAB X 对PIC单片机进行配置
  2. 最新重复名一键生成iApp安卓源码
  3. office出现应用程序错误无法正常启动(0xc0000142)
  4. 2003-2019年各省数据GDP、人均GDP、城镇化率、年末人口数、人口自然增长率
  5. 电商的噩梦:全国快递网点停摆65%?
  6. 最小权点覆盖集 与 最大权独立集
  7. 最小点权覆盖集最大点权独立集
  8. 90%以上的基础设施由OpenStack管理和提供的CERN,现在如何了?
  9. 技术内部创新的类型和要素
  10. 在配置Intel realsense (D435i)时遇到的问题(转载)