2048小游戏4X4C语言
/**/ #include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h> void print(void);/*显示游戏界面*/
int add(void);/*对中间变量数组进行处理*/ int code[][] =
{
{,,,},
{,,,},
{,,,},
{,,,},
};/*游戏中的16个格子*/
int temp[];/*中间变量*/
int move = ;/*移动次数*/
int score = ;/*分数*/ int main(void)
{
int gameover = ;/*判断游戏是否结束,1结束,0继续*/
int i,j;
int change = ;/*判断格子中的数是否改变,0不变*/
char input;
srand((unsigned)time(NULL));/*设置随机数的起点*/
while(gameover == )
{
if(change >= )/*仅当数发生改变时添加新数*/
{
do
{
i=((unsigned)rand()) % ;
j=((unsigned)rand()) % ;
}while(code[i][j] != );
if(((unsigned)rand()) % == )
{
code[i][j]=;
}
else
{
code[i][j]=;/*随机选一个空格填上2或4*/
}
move++;/*增加次数*/
}
print();/*显示*/
input = getch();/*输入方向*/
change = ;
switch(input)
{
case '':/*退出*/
printf("Are you sure to exit?(y/n)");
input=getchar();
if(input=='y'||input=='Y')
exit();
break; case 'W': case 'w':/*上*/
for(j=;j<=;j++)
{
for(i=;i<=;i++)
{
temp[i]=code[i][j];/*把一列数移到中间变量*/
}
temp[]=;
change += add();
for(i=;i<=;i++)
{
code[i][j]=temp[i];/*把处理好的中间变量移回来*/
}
}
break; case 'A': case 'a':/*左*/
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
temp[j]=code[i][j];/*把一行数移到中间变量*/
}
temp[]=;
change += add();
for(j=;j<=;j++)
{
code[i][j]=temp[j];/*把处理好的中间变量移回来*/
}
}
break; case 'S': case 's':/*下*/
for(j=;j<=;j++)
{
for(i=;i<=;i++)
{
temp[i]=code[-i][j];/*把一列数移到中间变量*/
}
temp[]=;
change += add();
for(i=;i<=;i++)
{
code[-i][j]=temp[i];/*把处理好的中间变量移回来*/
}
}
break; case 'D': case 'd':/*右*/
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
temp[j]=code[i][-j];/*把一行数移到中间变量*/
}
temp[]=;
change += add();
for(j=;j<=;j++)
{
code[i][-j]=temp[j];/*把处理好的中间变量移回来*/
}
}
break;
}
gameover=;
for(i=;i<=;i++)
for(j=;j<=;j++)
if(code[i][j]==)
gameover=;/*所有格子都填满则游戏结束*/
}
printf("Game over!\n");
getch(); return ;
} void print(void)/*显示游戏界面*/
{
int i,j;
system("CLS");/*清屏*/
printf("2048\n");
printf("W--UP A--LEFT S--DOWN D--RIGHT 0--EXIT\n");
printf("Score:%d Move:%d\n",score,move);
printf("Made by lanshanxiao\n");
printf("|-----------------------|\n");/*显示横向分隔线*/
for(i=;i<=;i++)
{
for(j=;j<=;j++)
{
if(code[i][j]==)
{
printf("| ");/*0显示空格*/
}
else
{
printf("|%5d",code[i][j]);/*显示数字和分隔线*/
}
}
printf("|\n|-----------------------|\n");/*显示横向分隔线*/
}
} int add(void)/*对中间变量数组进行处理*/
{
int i;
int t=;
int change=;/*判断数组是否有改变,0不变,1变化*/
do
{
for(i=;i<=;i++)
{
if(temp[i]==)
{
if(temp[i]!=temp[i+])
change=;/*当一个0后面不是0时数组改变*/
temp[i]=temp[i+];
temp[i+]=;
}
}/*去掉中间的0*/
t++;
}while(t<=);/*重复多次*/
for(i=;i<=;i++)
{
if(temp[i]==temp[i-])
{
if(temp[i]!=)
{
change=;/*当两个非零相同的数相加时数组改变*/
score=score+temp[i];/*加分*/
}
temp[i-]=temp[i-]*;
temp[i]=;
}
}/*把两个相邻的相同的数加起来*/ return change;
}
2048小游戏代码在上面的中,将加号展开就可以看到。
点击源码上的复制按键还可以直接将源代码复制下来。
2048小游戏4X4C语言的更多相关文章
- 2048小游戏代码解析 C语言版
2048小游戏,也算是风靡一时的益智游戏.其背后实现的逻辑比较简单,代码量不算多,而且趣味性强,适合作为有语言基础的童鞋来加强编程训练.本篇分析2048小游戏的C语言实现代码. 前言 游戏截图: 游 ...
- Swift实战之2048小游戏
上周在图书馆借了一本Swift语言实战入门,入个门玩一玩^_^正好这本书的后面有一个2048小游戏的实例,笔者跟着实战了一把. 差不多一周的时间,到今天,游戏的基本功能已基本实现,细节我已不打算继续完 ...
- 如何在CentOS上安装一个2048小游戏
如何在centos上安装一个2048小游戏 最近在学习CentOS系统,就琢磨着玩点什么,然后我看到有人在玩2048小游戏,所有我就在想,为啥不装一个2048小游戏搞一下嘞,于是乎,我就开始工作啦 由 ...
- jQuery实践-网页版2048小游戏
▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...
- C# 开发2048小游戏
这应该是几个月前,闲的手痒,敲了一上午代码搞出来的,随之就把它丢弃了,当时让别人玩过,提过几条更改建议,但是时至今日,我也没有进行过优化和更改(本人只会作案,不会收场,嘎嘎),下面的建议要给代码爱好的 ...
- js、jQuery实现2048小游戏
2048小游戏 一.游戏简介: 2048是一款休闲益智类的数字叠加小游戏 二. 游戏玩法: 在4*4的16宫格中,您可以选择上.下.左.右四个方向进行操作,数字会按方向移动,相邻的两个数字相同就会合 ...
- 用js实现2048小游戏
用js实现2048小游戏 笔记仓库:https://github.com/nnngu/LearningNotes 1.游戏简介 2048是一款休闲益智类的数字叠加小游戏.(文末给出源代码和演示地址) ...
- Docker从0开始之部署一套2048小游戏
本文记录一下在docker部署一套2048小游戏的过程,在娱乐中熟悉docker的应用部署.docker 安装不在本文讲述之中,参考我的其它博客. 1.获取image镜像. 方法一:daocloud. ...
- 使用JS实现2048小游戏
JS实现2048小游戏源码 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器.) &l ...
随机推荐
- docker kafka 修改hostname导致的问题
昨天发现开发环境的3台kafka无法消费,所以今日kafka的容器执行如下语句 bash-4.4# ./kafka-topics.sh --describe --zookeeper 192.168.0 ...
- The input file was not found
错误位置: File file= new File("/report/_test/test.xls");Workbook wb1 = jxl.Workbook.getWorkboo ...
- easyui里面的API=====》 load
在easyui里面有个API load,这个API实用性质很强,可以直接帮我加载页面的数据到想需要的相应输入框里面,但是也要注意,这些将要被填入数据的输入框里面的属性有个要求:其中输入框里面的name ...
- P2046 [NOI2010]海拔 平面图转对偶图(最小割-》最短路)
$ \color{#0066ff}{ 题目描述 }$ YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形. ...
- 海思hi35xx 开发学习(3):视频输入
视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVDS 接口和 HISPI 接口),SLVS-EC,BT.1120,BT.656,BT.601,DC 等接口接收视频数据.V ...
- CF1067D. Computer Game(斜率优化+倍增+矩阵乘法)
题目链接 https://codeforces.com/contest/1067/problem/D 题解 首先,如果我们获得了一次升级机会,我们一定希望升级 \(b_i \times p_i\) 最 ...
- Pycharm快捷键配置
1.主题 毫无疑问Pycharm是一个具有强大快捷键系统的IDE,这就意味着你在Pycharm中的任何操作,例如打开一个文件.切换编辑区域等,都可以通过快捷键来实现.使用快捷键不仅能提高操作速度,看起 ...
- js的跨域问题和解决办法
我们在开发中,经常会遇到跨域请求数据问题,那么什么是跨域呢?跨域就是js在不用域之间的数据传输或者通信,比如你在使用ajax从另外一个域请求数据,或者你的页面引入了iframe,要从iframe中获取 ...
- oracle闪回(flashback)的部分实用操作(彻底删除的除外)
一.数据delete并且commit提交之后的闪回 (一):根据时间来恢复:1.查询数据库当前时间(目的是为了检查数据库时间是否与你电脑时间相近,避免时间不同而将数据恢复到错误时间点)select ...
- mysql出现 Unknown column 'bname' in 'where clause'和Unknown column 'bid' in 'field list'
在用mysql数据库建表和修改数据库数据时,出现 Unknown column 'bname' in 'where clause'和Unknown column 'bid' in 'field li ...