C语言如何实现控制台打砖块小游戏
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,今天小编给大家分享一下C语言如何实现控制台打砖块小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一
千家信息网最后更新 2025年01月17日C语言如何实现控制台打砖块小游戏
今天小编给大家分享一下C语言如何实现控制台打砖块小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
这个问题是我在领扣上面看到的一道困难问题,原题是这样的:
#include "stdafx.h"#includeint a[10][10] = { { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 }, { 0, 0, 1, 1, 1, 1, 0, 1, 1, 0 }, { 0, 0, 0, 0, 1, 1, 0, 1, 1, 0 }, { 0, 1, 1, 1, 1, 1, 0, 0, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } };//初始化二维数组,写成这个形状便于一目了然void down(int a[10][10])//负责控制砖块下落的函数,使被赋值为3的砖块下落,下落到下界或值为1的方块之上{ int i, j; int m, n; for (i = 9; i >=0; i--) for (j = 0; j < 10; j++) if (a[i][j] == 3) { m = i; n = j; while (a[m + 1][n] != 1&&m!=9) { a[m + 1][n] = 1; a[m][n] = 0; m++; } }}void freshen(int a[10][10])//刷新函数,用于每次打过砖块之后,检查所有砖块的松动情况,过程大概是这样的,先将全部为1的砖块赋值为3,之后将四周与墙壁相连并且值为3的砖块赋值为·1,然后再进行一次全体砖块的循环遍历,这一次将所有与1相连接(1上下左右连接的砖块并且值为3的)的砖块赋值为1,这样的操作要做四遍,为什么要做这么多遍,这个问题留给读者体会。{ int i, j; for ( i = 0; i < 10; i++) for ( j = 0; j < 10; j++) if (a[i][j]==1) a[i][j] = 3; for (i = 0; i < 10; i++) { j = 0; while (a[i][j] != 0) { a[i][j] = 1; j++; } } for (i = 0; i < 10; i++) { j = 9; while (a[i][j] != 0) { a[i][j] = 1; j--; } } for (j = 0; j < 10; j++) { i = 0; while (a[i][j] != 0) { a[i][j] = 1; i++; } } for (j = 0; j < 10; j++) { i = 9; while (a[i][j] != 0) { a[i][j] = 1; i--; } } for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) if (a[i][j] == 1) { if (a[i - 1][j] == 3) a[i - 1][j] = 1; else if (a[i + 1][j] == 3) a[i + 1][j] = 1; else if (a[i ][j-1] == 3) a[i ][j-1] = 1; else if (a[i ][j+1] == 3) a[i ][j+1] = 1; } for (i = 9; i >=0; i--) for (j = 9; j >=0; j--) if (a[i][j] == 1) { if (a[i - 1][j] == 3) a[i - 1][j] = 1; else if (a[i + 1][j] == 3) a[i + 1][j] = 1; else if (a[i][j - 1] == 3) a[i][j - 1] = 1; else if (a[i][j + 1] == 3) a[i][j + 1] = 1; } for (i = 9; i >= 0; i--) for (j = 9; j >= 0; j--) if (a[i][j] == 1) { if (a[i - 1][j] == 3) a[i - 1][j] = 1; else if (a[i + 1][j] == 3) a[i + 1][j] = 1; else if (a[i][j - 1] == 3) a[i][j - 1] = 1; else if (a[i][j + 1] == 3) a[i][j + 1] = 1; } for (i = 9; i >= 0; i--) for (j = 9; j >= 0; j--) if (a[i][j] == 1) { if (a[i - 1][j] == 3) a[i - 1][j] = 1; else if (a[i + 1][j] == 3) a[i + 1][j] = 1; else if (a[i][j - 1] == 3) a[i][j - 1] = 1; else if (a[i][j + 1] == 3) a[i][j + 1] = 1; }}void view(int a[10][10])//打印砖块函数{ for (int i = -1; i < 10; i++) { printf("0%d ", i); } printf("\n"); for (int i = 0; i < 10; i++) { printf("%d: ", i); for (int j = 0; j < 10; j++) { if (a[i][j] == 1) printf("* "); else printf(" "); } printf("\n"); }}void beat(int a[10][10],int i,int j)//打砖块函数{ a[i][j] = 0;}void main(){ int p,q; view(a); for (int w = 0; w < 18; w++) { printf("beat whichp?\n"); scanf("%d", &p); printf("beat whichq?\n"); scanf("%d", &q); beat(a, p, q); freshen(a); down(a); view(a); } getchar(); return;}
我用到的编译器是VS2013,C语言写控制台程序,大一初学C语言的同学们可以看一下这个编程思想。
最后的效果是这样的:
以上就是"C语言如何实现控制台打砖块小游戏"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
砖块
j++
语言
控制
函数
知识
篇文章
控制台
小游戏
内容
问题
不同
很大
困难
一目了然
上下左右
一道
上下
下界
全体
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库泄露事件
济南商汇网络技术有限公司
天才少年网络安全小说
思科网络技术学院大赛
骑士互联网科技
惠州LINUX软件开发
日期字段作为数据库索引
魔兽世界正式服务器人口普查最新
微信电脑版 数据库
ajax访问服务器
租服务器挂机
ios企业软件开发
协同软件开发商
网络技术费用一般记什么科目
数据库行级锁怎么实现
数据库原理与应用课程论文
重庆智野网络技术集团
中兴服务器工厂
密云区智能化网络技术推广系统
网络安全ccss课程体系
汕头商城分销软件开发多少钱
网络安全维修台账
广州读计算机网络技术的职校
数据库中的html显示
数据库审计产品对比
电脑服务器怎么找
济南网络安全学院官网
steam中国cm服务器停服
朱家角民宿软件开发
杭州边豪网络技术有限公司