c语言编写的2048游戏代码,大家可以参考一下这些
2016-08-03 18:48
1001 查看
2048_launcher.c
#include <stdio.h> #include <stdlib.h> #include <Windows.h> void main() { printf("正在启动中,请稍后!\n"); Sleep(1000); system("bin\\Version\\games\\0.1\\0.1.exe"); }补充:0.1.c
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<time.h> #define WIN 256 // 可以修改决定游戏输赢的值 // 矩阵数组 int num[4][4]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; int t[5]={0,0,0,0,0}; // 辅助数组 int move=0; // 记录移动步数 int score=0; // 记录得分情况 int max=0; // max表示游戏输赢,max=WIN时赢 int change=1; // 产生一个随机位置和随机数 void Srand() { int i,j; do// 产生一个随机位置,如果产生的位置有数据,就继续随机生成一个新位置 { i=((unsigned)rand())%4; j=((unsigned)rand())%4; }while(num[i][j]!=0); if(((unsigned)rand())%4==0) { // 产生一个随机数,如果该数对4取余=0,则填充为4 num[i][j]=4; } else { num[i][j]=2; } move++; } void Print() { int j,i; system("CLS"); printf("*~~~~~~~~2048~~~~~~~*\n"); printf("*author: 亚威 *\n"); printf("*得分: %d 步数: %d \n",score,move); printf("*~~~~~~~~~~~~~~~~~~~*\n"); for(i=0;i<=3;i++) { for(j=0;j<=3;j++) { if(num[i][j]==0) printf("* "); else printf("*%4d",num[i][j]); } printf("*\n*~~~~~~~~~~~~~~~~~~~*\n"); } } // 消除t数组中前面和中间出现的0 void fun() { int i,j; for(i=0;i<=3;i++) { if(t[i]==0) { for(j=i+1;j<=3;j++) { if(t[j]!=0) { change=1; break; } } t[i]=t[j]; t[j]=0; } if(j>=3) break; } } // 合并操作 void hebing() { int i; for(i=0;i<=2;i++) { if((t[i]!=0)&&(t[i]==t[i+1])) { t[i]*=2; score+=t[i]; change=1; t[i+1]=0; } if(max<t[i]) max=t[i]; } } // 合并相邻且相等的两个数 void add() { fun(); // 消除前面的和中间的0 hebing(); // 合并相邻且相等的两个数 fun(); // 再次消0 } int main() { int i,j; int gameover=1; // 产生一个随机位置 srand((unsigned)time(NULL)); max=0; while(gameover&&(max<WIN)) { if(change) { Srand(); // 产生一个随机位置和随机数 } change=0; Print(); // 显示界面 char in=getch(); // 读取操作命令 switch(in) { case 'w': case 'W': for(i=0;i<=3;i++) { // 依次处理第1至第4列 for(j=0;j<=3;j++) { // 把第i列的数据依次赋给辅助数组t t[j]=num[j][i]; } add(); // 核心:合并相邻且相等的两个数 for(j=0;j<=3;j++) { // 把处理后的数据依次放到矩阵对应位置 num[j][i]=t[j]; } } break; case 's': case 'S': for(i=0;i<=3;i++) { // 依次处理第1至第4列 for(j=0;j<=3;j++) { // 把第i列的数据依次赋给辅助数组t t[3-j]=num[j][i]; } add(); // 核心:合并相邻且相等的两个数 for(j=0;j<=3;j++) { // 把处理后的数据依次放到矩阵对应位置 num[j][i]=t[3-j]; } } break; case 'a': case 'A': for(i=0;i<=3;i++) { // 依次处理第1至第4列 for(j=0;j<=3;j++) { // 把第i列的数据依次赋给辅助数组t t[j]=num[i][j]; } add(); // 核心:合并相邻且相等的两个数 for(j=0;j<=3;j++) { // 把处理后的数据依次放到矩阵对应位置 num[i][j]=t[j]; } } break; case 'd': case 'D': for(i=0;i<=3;i++) { // 依次处理第1至第4列 for(j=0;j<=3;j++) { // 把第i列的数据依次赋给辅助数组t t[3-j]=num[i][j]; } add(); // 核心:合并相邻且相等的两个数 for(j=0;j<=3;j++) { // 把处理后的数据依次放到矩阵对应位置 num[i][j]=t[3-j]; } } break; } gameover=0; for(i=0;i<=3;i++) { for(j=0;j<=3;j++) { if(num[i][j]==0) gameover=1; } } if((gameover==0)&&(change==0)) break; } Print(); if(max>=WIN) { printf("你赢了!\n"); printf("你很牛啊!!!\n"); } else { printf("游戏结束!\n"); printf("努力啊!!!\n"); } getch(); return 0; }
相关文章推荐
- 以下是在网上看到的一个用C语言编写的木马源程序代码大家
- 使用Qt将一系列图片通过网络发送到客户端动态显示的参考代码(修改一下可以用作远程网络监控)。
- 鼠标滚轮支持的behavior 只要在blend中拖动一下无需编写任何代码,就可以实现滚轮了
- 使用Qt将一系列图片通过网络发送到客户端动态显示的参考代码(修改一下可以用作远程网络监控)
- 开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。 十个最值得阅读学习的C开源项目代码 1. Webbench 2. Tinyhttpd
- ipad2利用crappstore安装破解软件成功-还是写一下我安装的过程吧,大家可以参考一下
- 初步整理了一下ASP.NET Portal Starter Kit代码,供大家参考
- discuz bbs注册,登录流程整理!想打通bbs又不想读一遍代码可以参考一下
- 初步整理了一下ASP.NET Portal Starter Kit代码,供大家参考
- 一篇文章,我就写一个关于浏览器的js吧 大家可以参考一下。以后备用!!!
- 这篇文章主要为大家详细介绍了jQuery密码强度验证控件使用详解的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
- java servlet 几种页面跳转的方法,需要的朋友可以参考一下 在访问网页的过程中,页面自动刷新、跳转和重定向是经常用到的,这里就说说在Java中是如何实现这些功能的! 一、页面自动刷新
- 给大家做了一个关于日程的例子,可以参考一下,对进一步学习有所帮助
- 上周末没事写了一个UDP的例子 大家感兴趣的可以参考一下
- discuz bbs注册,登录流程整理!想打通bbs又不想读一遍代码可以参考一下
- 关于C语言变量和函数命名总结以下几点,大家可以讨论交流一下:
- JAVA 面试基础试题(大家可以参考一下学Java时需要掌握的基础知识)
- 初步整理了一下ASP.NET Portal Starter Kit代码,供大家参考
- 一个C语言的原代码,有8处错误,望大家帮我修改一下。
- 06年的CS Sub,挺像考研考纲的。。平时学习的时候,可以参考一下~