2048游戏C语言代码

听说2048游戏实现起来很easy!

所以今天就试了试!确实不太难,要想编的很成功,也不是太容易!有很多细节需要考虑!

下面是我自己设计的代码,估计里面会漏洞百出!希望路过大神能指点一二!

#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()
{
	system("CLS");
	printf("*~~~~~~~~2048~~~~~~~*\n");
	printf("*author:  亚威      *\n");
	printf("*得分: %d  步数: %d  \n",score,move);
	printf("*~~~~~~~~~~~~~~~~~~~*\n");
	for(int i=0;i<=3;i++)
	{
		for(int 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()
{
	for(int 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("You Win!\n");
		printf("你很牛啊!!!\n");
	}
	else
	{
		printf("Gameover\n");
		printf("努力啊!!!\n");
	}
	system("pause");
	return 0;
}

2048游戏C语言代码,布布扣,bubuko.com

时间: 2024-10-01 06:22:21

2048游戏C语言代码的相关文章

2048游戏核心逻辑代码

main(){ List a = [0,2,0,2]; a = merge(a); print(a); } merge(List arr){ var i, nextI, len, m; len = arr.length; for(i=0; i<len; i++){ nextI = -1; for(m=i+1; m<len; m++){ if(arr[m]!=0){ nextI = m; break; } } if(nextI!=-1){ if(arr[i]==0){ arr[i] = arr[

空闲时间用C语言写了下2048游戏

本身这个游戏逻辑挺简单的,所以,不多说了,直接上代码吧 #include <climits> #include <cstdio> #include <cstring> #include <stack> #include <string> #include <map> #include <vector> #include <cmath> using namespace std; const int MAXX =

280行代码:Javascript 写的2048游戏

2048 原作者就是用Js写的,一直想尝试,但久久未动手. 昨天教学生学习JS代码.不妨就做个有趣的游戏好了.2048这么火,是一个不错的选择. 思路: 1. 数组 ,2维数组4x4 2. 移动算法,移动后有数字的对齐,无数字(我用的0,但不显示)补齐. 移动前 移动后(注意程序合并了第一行2个2,并产生了新的2) 移动算法分2步: 第一步骤:移动 第二步骤:合并 移动代码参考: [html] view plaincopy function left(t,i) { var j; var len 

游戏2048源代码 - C语言控制台界面版

完整源代码如下,敬请读者批评指正: 1 /* 2 * Copyright (C) Judge Young 3 * E-mail: [email protected] 4 * Version: 1.0 5 */ 6 7 #include <stdio.h> 8 #include <time.h> /* 包含设定随机数种子所需要的time()函数 */ 9 #include <conio.h> /* 包含Windows平台上完成输入字符不带回显和回车确认的getch()函数

最少javascript代码完成一个2048游戏

原生javascript代码写的2048游戏.建议在谷歌浏览器下跑.'WASD'控制方向.演示地址请移步:http://runjs.cn/detail/bp8baf8b 直接贴代码~ html: <!DOCTYPE> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/htm

一个用 C 语言写的迷你版 2048 游戏,只有 500个字符

Jay Chan 用 C 语言写的一个迷你版 2048 游戏,只有 487 个字符.来围观吧 M[16],X=16,W,k;main(){T(system("stty cbreak") );puts(W&1?"WIN":"LOSE");}K[]={2,3,1};s(f,d,i ,j,l,P){for(i=4;i--;)for(j=k=l=0;k<4;)j<4?P=M [w(d,i,j++)],W|=P>>11,l*

一起来写2048(160行python代码)

前言: Life is short ,you need python. --Bruce Eckel 我与2048的缘,不是缘于一个玩家,而是一次,一次,重新的ACM比赛.四月份校赛初赛,第一次碰到2048,两周后决赛再次遇到2048,后来五月份的广东省赛,又出现了2048.在这三次比赛过程中,我一次2048都没玩过..全靠队友的解释,直到昨天,我突然想起写个2048吧,于是下了个2048玩了几盘,之后就開始用python来写了,心想就不写界面了,为了简洁. 我对python并不熟悉,可是我在之前

不敢想!不敢想!我用Python自动玩转2048游戏

近来在折腾selenium自动化, 感觉配合爬虫很有意思, 大多数以前难以模拟登录的网站都可以爬了,折腾了这么久, 于是想自动玩个2048游戏!嘿嘿, 我是一个不擅长玩游戏的人, 以前玩2048就经常得了很低的分,每每想起都"痛心疾首", 所以我打算拿2048开刀, 通过几种方式, 让程序帮我玩! 环境: python 3.5 用到的库: re, random, time, selenium 2048网页版: http://2048.oubk.com 本篇用到了selenium,运行前

用javascript制作2048游戏的思路(原创若 转载请附上本链接)

一.项目已上传至github,地址:https://github.com/forjuan/2048game 二.学习了javascript基础后,想要捣鼓点东西做,做了一个自己以前很爱玩的2048游戏.经过初期的思路设计手工画了设计思路图.手工图有空在用图画出来. 实现2048的功能:1.核心:上下左右移动. 2.游戏开始,游戏结束. 3.外观实现. 4.积分(暂时没实现) 把问题分解:1.首要难点移动,将移动进行分解,分为上下左右移动: 2.用什么记录位置,怎样记录每个方块的值,边界,相同值相