【C++ 程序】 2048游戏(EasyX 图形界面)

这是用 EasyX 制作图形界面游戏的第三次试验。效果不错。

程序

//This is a simple 2048 game.

#include <iostream>
#include <vector>
#include <Windows.h>
#include <string>
#include <random>
#include <ctime>
#include <conio.h>
#include <graphics.h>
using namespace std;

unsigned long score = 0;
int stop = 0;
string s0 = "    ";
string s2 = " 2  ";
string s4 = " 4  ";
string s8 = " 8  ";
string s16 = " 16 ";
string s32 = " 32 ";
string s64 = " 64 ";
string s128 = "128 ";
string s256 = "256 ";
string s512 = "512 ";
string s1024 = "1024";
string s2048 = "2048";
string s4096 = "4096";
string s8192 = "8192";

IMAGE i0, i2, i4, i8, i16, i32, i64, i128, i256, i512, i1024, i2048, i4096, i8192, imageOver;

vector<vector<string>> p = {
    {
   s0, s0, s0, s0}, {
   s0, s2, s0, s0}, {
   s0, s0, s0, s0}, {
   s0, s0, s0, s0} };

int equal_int(string str)
{
   
	if (str == s2) return 4;
	else if (str == s4) return 8;
	else if (str == s8) return 16;
	else if (str == s16) return 32;
	else if (str == s32) return 64;
	else if (str == s64) return 128;
	else if (str == s128) return 256;
	else if (str == s256) return 512;
	else if (str == s512) return 1024;
	else if (str == s1024) return 2048;
	else if (str == s2048) return 4096;
	else if (str == s4096) return 8192;
	else return 0;
}

string equal_str(string str)
{
   
	int num = equal_int(str);
	switch (num)
	{
   
	case 4: return s4;
	case 8: return s8;
	case 16: return s16;
	case 32: return s32;
	case 64: return s64;
	case 128: return s128;
	case 256: return s256;
	case 512: return s512;
	case 1024: return s1024;
	case 2048: return s2048;
	case 4096: return s4096;
	case 8192: return s8192;
	}
}

void change(int n)
{
   
	switch (n)
	{
   
	case 3: // left
		for (int i = 0; i != 4; i++)
		{
   
			if (p[i][0] == s0)
			{
   
				p[i][0] = p[i][1];
				p[i][1] = p[i][2];
				p[i][2] = p[i][3];
				p[i][3] = s0;
			}
			if (p[i][0] == s0)
			{
   
				p[i][0] = p[i][1];
				p[i][1] = p[i][2];
				p[i][2] = s0;
			}
			if (p[i][0] == s0)
			{
   
				p[i][0] = p[i][1];
				p[i][1] = s0;
			}
			if (p[i][1] == s0)
			{
   
				p[i][1] = p[i][2];
				p[i][2] = p[i][3];
				p[i][3] = s0;
			}
			if (p[i][1] == s0)
			{
   
				p[i][1] = p[i][2];
				p[i][2] = s0;
			}
			if (p[i][2] == s0)
			{
   
				p[i][2] = p[i][3];
				p[i][3] = s0;
			}
		}
		for (int i = 0; i != 4; i++)
		{
   
			if (p[i][0] == p[i][1] && p[i][0] != s0)
			{
   
				score += equal_int(p[i][0]);
				p[i][0] = equal_str(p[i][0]);
				p[i][1] = p[i][2];
				p[i][2] = p[i][3];
				p[i][3] = s0;
				if (p[i][1] == p[i][2] && p[i][1] != s0)
				{
   
					score += equal_int(p[i][1]);
					p[i][1] = equal_str(p[i][1]);
					p[i][2] = p[i][3];
				}
			}
			else if (p[i][1] == p[i
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值