IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 2021.7.4 | 2048小游戏 -> 正文阅读

[游戏开发]2021.7.4 | 2048小游戏

2021.7.4

闲的蛋疼的暑假生活开始了,因为是毕业,所以没有作业,在家突发奇想的就rua出了这篇又长又臭的码来,

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<iostream>
#include<windows.h>
#define random(x) (rand()%x)
using namespace std;
int a[5][5];
long long ans=0;
void SetColorAndBackground(int ForgC, int BackC)
{
	WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
int fun(int x)
{
	int y=0;
	if(x==0)
		return 0;
	while(x!=1)
	{
		y++;
		x/=2;
	}
	return y;
}
int print()
{
	cout<<ans<<endl;
	for(int i=1;i<=4;i++)
	{
		for(int j=1;j<=4;j++)
		{
			SetColorAndBackground(15,fun(a[i][j]));
			printf("%3d",a[i][j]);
		}
		SetColorAndBackground(15,0);
		cout<<endl;
	}
}
bool check()
{
	for(int i=1;i<=4;i++)
		for(int j=1;j<=4;j++)
		{
			if(a[i][j]==0||a[i][j]==a[i-1][j]||a[i][j]==a[i+1][j]||a[i][j]==a[i][j-1]||a[i][j]==a[i][j+1])
				return true;
		}
	return false;
}
int Left()
{
	int b[5],k;
	for(int i=1;i<=4;i++)
	{
		k=0;
		for(int j=0;j<=4;j++)
			b[j]=0;
		for(int j=1;j<=4;j++)
			if(a[i][j]!=0)
				b[++k]=a[i][j];
		for(int j=2;j<=k;j++)
		{
			if(b[j-1]==b[j])
			{
				b[j-1]+=b[j];
				ans+=b[j-1];
				for(int w=j+1;w<=k;w++)
					b[w-1]=b[w];
				b[k]=0;
				k--;
			}
		}
		for(int j=0;j<=4;j++)
			a[i][j]=0;
		for(int j=1;j<=4;j++)
			a[i][j]=b[j];
	}
}
int Right()
{
	int b[5],k;
	for(int i=1;i<=4;i++)
	{
		k=0;
		for(int j=0;j<=4;j++)
			b[j]=0;
		for(int j=1;j<=4;j++)
			if(a[i][j]!=0)
				b[++k]=a[i][j];
		for(int j=2;j<=k;j++)
		{
			if(b[j-1]==b[j])
			{
				b[j-1]+=b[j];
				ans+=b[j-1];
				for(int w=j+1;w<=k;w++)
					b[w-1]=b[w];
				b[k]=0;
				k--;
			}
		}
		for(int j=1;j<=4;j++)
			a[i][j]=0;
		for(int j=4,w=k;w>=1;j--,w--)
			a[i][j]=b[w];
	}
}
int Up()
{
	int b[5],k,i;
	for(int j=1;j<=4;j++)
	{
		k=0;
		for(i=0;i<=4;i++)
			b[i]=0;
		for(i=1;i<=4;i++)
			if(a[i][j]!=0)
				b[++k]=a[i][j];
		for(i=2;i<=k;i++)
		{
			if(b[i-1]==b[i])
			{
				b[i-1]+=b[i];
				ans+=b[i-1];
				for(int w=i+1;w<=k;w++)
					b[w-1]=b[w];
				b[k]=0;
				k--;
			}
		}
		for(i=1;i<=4;i++)
			a[i][j]=b[i];
	}
}
int Down()
{
	int b[5],k,i,w;
	for(int j=1;j<=4;j++)
	{
		k=0;
		for(i=0;i<=4;i++)
			b[i]=0;
		for(i=1;i<=4;i++)
			if(a[i][j]!=0)
				b[++k]=a[i][j];
		for(i=2;i<=k;i++)
		{
			if(b[i-1]==b[i])
			{
				b[i-1]+=b[i];
				ans+=b[i-1];
				for(w=i+1;w<=k;w++)
					b[w-1]=b[w];
				b[k]=0;
				k--;
			}
		}
		for(i=1;i<=4;i++)
			a[i][j]=0;
		for(i=4,w=k;i>=1,w>=1;i--,w--)
			a[i][j]=b[w];
	}
}
int f()
{
	int w=0;
	for(int i=1;i<=4;i++)
		for(int j=1;j<=4;j++)
			if(a[i][j]!=0)
				w++;
	return w;
}
int main()
{
	srand( (unsigned)time( NULL ) ); 
	int i,j,m,n,x,y,z,p;
	for(i=1;i<=4;i++)
		a[0][i]=-1,a[i][0]=-1;
	while(check()==true)
	{
		p=0;
		if(f()!=16)
		{
			do
			{
				x=random(5),y=random(5);
				while(x==0)
					x=random(4);
				while(y==0)
					y=random(4);
			}
			while(a[x][y]!=0);
			do
			{
				z=random(101);
			}
			while(z==0);
			if(z<=70)
				a[x][y]=2;
			else
				a[x][y]=4;
			system("cls");
			print();
			p=0;
			if(check()==false)
				break;
		}
		
		while(1)
		{
			//*********************************************
			if( ::GetAsyncKeyState(VK_LEFT) & 0x8000 )
			{
				Left();
				while(1)
				{
					if(::GetAsyncKeyState(VK_LEFT) & 0x8000);
					else
					{
						p=1;
						break;
					}
						
				}
			}
			if( ::GetAsyncKeyState(VK_RIGHT)& 0x8000 )
			{
				Right();
				while(1)
				{
					if(::GetAsyncKeyState(VK_RIGHT) & 0x8000);
					else
					{
						p=1;
						break;
					}
				}
			}	
			if( ::GetAsyncKeyState(VK_UP) & 0x8000 )
			{
				Up();
				while(1)
				{
					if(::GetAsyncKeyState(VK_UP) & 0x8000);
					else
					{
						p=1;
						break;
					}
				}
			}
			if( ::GetAsyncKeyState(VK_DOWN) & 0x8000 )
			{
				Down();
				while(1)
				{
					if(::GetAsyncKeyState(VK_DOWN) & 0x8000);
					else
					{
						p=1;
						break;
					}
				}
			}
			if(p==1)
				break;
			//*********************************************
		}
	}
}

有bug私信我,我改

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-07-07 00:08:20  更:2021-07-07 00:08:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 1:42:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码