C语言-1024小游戏
本代码不够完美,没有积分项,希望读者给个意见,怎样做?
好了,上代码!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define SIZE 4
//1024 小游戏//输出矩阵
void print_arry(int a[][SIZE]);
//填数组
int random_arry(int a[][SIZE]);
//读入键盘上下右左 1 2 3 4
int toward_key();
//向上移动
void up_move(int a[][SIZE]);
//向下移动
void down_move(int a[][SIZE]);
//向右移动
void right_move(int a[][SIZE]);
//向左移动
void left_move(int a[][SIZE]);void main()
{int a[SIZE][SIZE]={0},n;random_arry(a);print_arry(a);while(1){done:n=toward_key();switch(n){case 1:up_move(a);break;case 2:down_move(a);break;case 3:right_move(a);break;case 4:left_move(a);break;default:printf("输入错误!\n请重新输入!\n");goto done;}n=random_arry(a);if(!n){printf("游戏结束!\n");break;}print_arry(a);}
}void print_arry(int a[][SIZE])
{printf("1024小游戏:\n\n");for(int i=0;i<SIZE;i++){for(int j=0;j<SIZE;j++) printf("%5d\t",a[i][j]);printf("\n\n"); }printf("\n");
}int random_arry(int a[][SIZE])
{srand(time(0));//如果空为0,直接结束函数int t=0;for(int i=0;i<SIZE;i++) for(int j=0;j<SIZE;j++) if(0 == a[i][j]) t++;if(0 == t){printf("game over!\n");return 0;}//没有则随机填空while(1){t=rand()%(SIZE*SIZE);if(0 == a[t/SIZE][t%SIZE]) //如果该位为空{a[t/SIZE][t%SIZE]=2;return 1;}}
}int toward_key()
{char ch[4],t=0;while((ch[t++]=getchar())!='\n'); //最后一个用于装\0或者\nif(ch[0]==27&&ch[1]==91) //确定是方向键return ch[2]-64; //ch[3]的可能取值 'A' 'B' 'C' 'D' 故才取的第三位return 0;//否者不是方向键
}void up_move(int a[][SIZE])
{static int b[SIZE][SIZE]; //清除0后放在b中for(int i=0;i<SIZE;i++) //列号{for(int j=0,t=0;j<SIZE;j++) //行号{if(a[j][i] != 0) b[t++][i]=a[j][i];}}//初始化a 全部赋值为0 为下一步再次重新赋值做准备for(int i=0;i<SIZE*SIZE;i++) a[i/SIZE][i%SIZE]=0;//相同的加法for(int i=0;i<SIZE;i++) //列号{for(int j=0;j<SIZE-1;j++) //行号{if(b[j][i] == b[j+1][i]) //相加----x2等效 前一个x2后一个变0{b[j][i]*=2;b[j+1][i]=0;}}}//清除0后放在a中for(int i=0;i<SIZE;i++) //列号{for(int j=0,t=0;j<SIZE;j++) //行号{if(b[j][i] != 0) a[t++][i]=b[j][i];}}
}void down_move(int a[][SIZE])
{static int b[SIZE][SIZE];for(int i=0;i<SIZE;i++) //列号{for(int j=SIZE-1,t=SIZE-1;j >= 0;j--) //行号{if(a[j][i] != 0) b[t--][i]=a[j][i];}}for(int i=0;i<SIZE*SIZE;i++) a[i/SIZE][i%SIZE]=0;for(int i=0;i<SIZE;i++) //列号{for(int j=SIZE-1;j > 0;j--) //行号{if(b[j][i] == b[j-1][i]) {b[j][i]*=2;b[j-1][i]=0;}}}for(int i=0;i<SIZE;i++) //列号{for(int j=SIZE-1,t=SIZE-1;j >= 0;j--) //行号{if(b[j][i] != 0) a[t--][i]=b[j][i];}}
}void left_move(int a[][SIZE])
{static int b[SIZE][SIZE];for(int i=0;i<SIZE;i++) //行号{for(int j=0,t=0;j<SIZE;j++) //列号{if(a[i][j] != 0) b[i][t++]=a[i][j];}}for(int i=0;i<SIZE*SIZE;i++) a[i/SIZE][i%SIZE]=0;for(int i=0;i<SIZE;i++) //行号{for(int j=0;j<SIZE-1;j++) //列号{if(b[i][j] == b[i][j+1]) {b[i][j]*=2;b[i][j+1]=0;}}}for(int i=0;i<SIZE;i++) //行号{for(int j=0,t=0;j<SIZE;j++) //列号{if(b[i][j] != 0) a[i][t++]=b[i][j];}}
}void right_move(int a[][SIZE])
{static int b[SIZE][SIZE];for(int i=0;i<SIZE;i++) //行号{for(int j=SIZE-1,t=SIZE-1;j>=0;j--) //列号{if(a[i][j] != 0) b[i][t--]=a[i][j];}} for(int i=0;i<SIZE*SIZE;i++) a[i/SIZE][i%SIZE]=0;for(int i=0;i<SIZE;i++) {for(int j=SIZE-1,t=SIZE-1;j > 0;j--) //列号{if(b[i][j] == b[i][j-1]) {b[i][j]*=2;b[i][j-1]=0;}}}for(int i=0;i<SIZE;i++) //行号{for(int j=SIZE-1,t=SIZE-1;j>=0;j--) //列号{if(b[i][j] != 0) a[i][t--]=b[i][j];}}
}
效果图,由于简单的测试,没有细测试!功能可实现!特点在于,可以识别键盘上的上下左右键!
C语言-1024小游戏相关推荐
- c语言 倒计时不清屏_打字游戏超细讲解(C语言基础小游戏)
首先我们会发现我们网上看到的打字游戏都是上来就敲代码,小白看的一脸懵,所以鑫哥在这给大家送上一份超级详细的打字游戏编写流程及对应的结果展示,希望可以帮到小白进行入门学习. 话不多说,我们先看一下什么叫 ...
- c语言经典游戏,C语言——经典小游戏——打砖块
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C语言--经典小游戏--打砖块 玩法:按A与D控制球拍的移动,按S暂停游戏 百度网盘下载:http://pan.baidu.com/s/1o64ECTc ...
- c语言2048代码linux,C语言2048小游戏课设(附源码).doc
PAGE PAGE 1 C语言2048小游戏课设 项目说明 本系统基于C语言开发,适用于刚入门的C语言新手项目课设,开发软件采用VC++6.0开发,VS,DEV C++等均可运行.(书生) 项目运行截 ...
- c语言五子棋学年论文,基于c语言五子棋小游戏生本科论文.doc
基于c语言五子棋小游戏生本科论文 五子棋小游戏 需求分析 现在有越来越多的人使用电脑,而且五子棋的受众广泛但实体棋操作较为繁琐且平时较难实现,所以电脑版的五子棋游戏应运而生.大家对于这个小游戏的需求如 ...
- 用c语言编写的打字母游戏,用C语言编写小游戏——“井字棋”
原标题:用C语言编写小游戏--"井字棋" 作者:Milo Yip 来源:知乎 原文链接:https://zhuanlan.zhihu.com/p/39581573 在 Milo Y ...
- C语言自制小游戏:三子棋(井字棋)智能下棋补充
目录 一.前期准备 二.逻辑与程序实现 1.连珠 ①横向连珠 ②纵向连珠 ③斜向连珠 ④函数完善 2.堵棋 ①横向堵棋 ②纵向堵棋 ③斜向堵棋 3.整理函数 ①整理AI_Computer函数 ②修改C ...
- C语言实现小游戏——模拟微信小游戏《最强飞刀手》
C语言实现小游戏--模拟微信小游戏<最强飞刀手> 曾经玩过的微信小游戏,想着用C语言实现,只可惜,下图是我的上限. 这个下游戏界面简陋,把旋转的西瓜做成了平的接盘:实现的功能有:接盘的移动 ...
- c语言小游戏出拳,C语言--拳击小游戏
原标题:C语言--拳击小游戏 #include //标准输入输出头文件 #include //通用工具库头文件 #include //时间头文件 int main() { //游戏规则:回合制(我方先 ...
- 基于c语言的小游戏,--基于C语言的小游戏设计.doc
--基于C语言的小游戏设计.doc 级丌 密公 本科生毕业(学位)论文 基于c语言的爪游软设计 李俊佶 (2009061322) TOC \o "1-5" \h \z 指导教师姓名 ...
- C语言趣味小游戏——三子棋
全篇无任何废话,本文的解释大多数都在代码段中,所以一定要看代码,边看边学边理解. 这只是初学者入门的一个小游戏,不难懂,没有什么复杂的内容 可以先学习一下比三子棋还简单的猜数字小游戏 C语言趣味小游戏 ...
最新文章
- java随机产生100个大小写字母_Java生成固定长度的随机字符串(以大小写字母和数字)...
- hdu 5019 第k大公约数
- 外来Slackware包管理工具[转]
- 快速实现一个Http回调组件
- 0 改造,让单体/微服务应用成为 Serverless Application
- python读取git日志_Python获取gitlab提交历史!
- 翻牌抽奖 php,PHP+jQuery开发简单的翻牌抽奖实例
- Android--从相册中选取照片并返回结果
- 时间操作(Java版)—将毫秒转换为年月日时分秒
- 这个开源项目有点强,无需编码,可一键生成前后端代码
- 第二届“马栏山”杯国际音视频算法大赛音乐节拍检测题参赛总结及分享(Rank7)
- 使用python操作新浪微博和一些想法
- 语音识别sdk_语音识别 sdk_离线语音识别sdk - 云+社区 - 腾讯云
- JS面试题汇总(六)
- FFmpeg的HEVC解码器源代码简单分析:环路滤波(Loop Filter)
- 微信小程序的全局变量和单例
- 显示技术全倒装COB小间距LED与正装COB小间距的优势对比。
- 使用python求解特征值与特征向量
- post_thumbnail_html,WordPress 常用函数 / get_the_post_thumbnail
- a除以b的编程怎么写C语言,输入a,b两个整数,编程求出a除以b得到的商和余数.c语言...