Discuz! Board

 找回密码
 立即注册
查看: 397|回复: 0

3.23 2048

[复制链接]

54

主题

66

帖子

574

积分

高级会员

Rank: 4

积分
574
发表于 2023-3-23 19:33:12 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
void g_chen()//10进制高精度乘法 
{
	char a[1000],b[1000];
	int a1[1000]={0},b1[1000]={0},c1[2001]={0};
	cin>>a>>b;	
	int len_a=strlen(a);
	int len_b=strlen(b);
	//int len=max(len_a,len_b);
	int jw=0;

	
	for(int i=len_a-1;i>=0;i--)//反向+转换int 
	{
		a1[len_a-1-i]=a[i]-'0';
	}
	
	for(int i=len_b-1;i>=0;i--)
	{
		b1[len_b-1-i]=b[i]-'0';
	}
	
	for(int i=0;i<len_a;i++)//乘法 
	for(int j=0;j<len_b;j++)
	{
		c1[i+j]+=a1[i]*b1[j];
		c1[i+j+1]+=(c1[i+j]/10);
		c1[i+j]=c1[i+j]%10;
	}
	
	int flag=1;
	for(int i=len_a+len_b;i>=0;i--)
	{
		if((flag==1)&&c1[i]==0){}
		else
		{cout<<c1[i];
		flag=0;
		} 	
	}
	if(flag==1) cout<<0;
} 

[C++] 纯文本查看 复制代码
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void loadImage();
void releaseImage();
void addRandomNum(int n);
bool move(int direction);
void draw();
#define DEVIDE 15
#define GRID_WIDTH 106
//图片
#define NUM_BLOCK 18
PIMAGE blockImgs[NUM_BLOCK], backgroundImg;
key_msg keyMsg;
int board[4][4];			//格子
//int emptyBlock = 16;	//空格子数
char ch;
void upSlide()
{
	for(int i=3;i>=1;i--)
	{
		for(int j=3;j>=0;j--)
		{
			if((board[i-1][j]==0)&&(board[i][j]!=0))
			{
				board[i-1][j]=board[i][j];
				board[i][j]=0;
			}
			else if((board[i][j]==board[i-1][j]) && (board[i][j]!=0))
			{
				board[i-1][j]=board[i][j]+1;
				board[i][j]=0;
			}
		}
	}
}
void leftSlide()
{
	for(int i=3;i>=0;i--)
	{
		for(int j=3;j>=1;j--)
		{
			if((board[i][j-1]==0)&&(board[i][j]!=0))
			{
				board[i][j-1]=board[i][j];
				board[i][j]=0;
			}
			else if((board[i][j-1]==board[i][j] ) && (board[i][j]!=0))
			{
				board[i][j-1]=board[i][j]+1;
				board[i][j]=0;
			}
		}
	}
}
void rightSlide()
{
	for(int i=3;i>=0;i--)
	{
		for(int j=0;j<=2;j++)
		{
			if((board[i][j+1]==0)&&(board[i][j]!=0))
			{
				board[i][j+1]=board[i][j];
				board[i][j]=0;
			}
			else if((board[i][j+1]==board[i][j] ) && (board[i][j]!=0))
			{
				board[i][j+1]=board[i][j]+1;
				board[i][j]=0;
			}
		}
	}
}
void downSlide()
{
	for(int i=0;i<=3;i++)
	{
		for(int j=3;j>=1;j--)
		{
			if((board[i+1][j]==0)&&(board[i][j]!=0))
			{
				board[i+1][j]=board[i][j];
				board[i][j]=0;
			}
			else if((board[i][j]==board[i+1][j]) && (board[i][j]!=0))
			{
				board[i+1][j]=board[i][j]+1;
				board[i][j]=0;
			}
		}
	}
}
bool judgeUpSlide()
{
	for(int i=3;i>=1;i--)
	{
		for(int j=3;j>=0;j--)
		{
			if(board[i][j]==0)return true;
			else if(board[i][j]==board[i-1][j])return true;
		}
	}
	return false;
}
bool judgeLeftSlide()
{
	for(int i=3;i>=0;i--)
	{
		for(int j=3;j>=1;j--)
		{
			if(board[i][j]==0)return true;
			else if(board[i][j]==board[i][j-1])return true;
		}
	}
	return false;
}
bool judgeRightSlide()
{
	for(int i=3;i>=0;i--)
	{
		for(int j=0;j<=2;j++)
		{
			if(board[i][j]==0)return true;
			else if(board[i][j]==board[i][j+1])return true;
		}
	}
	return false;
}
bool judgeDownSlide()
{
	for(int i=0;i<=3;i++)
	{
		for(int j=3;j>=1;j--)
		{
			if(board[i][j+1]==0)return true;
			else if(board[i][j]==board[i+1][j])return true;
		}
	}
	return false;
}
void getRand()
{
	int x,y;
	do
	{
		x=rand()%4;
		y=rand()%4;
		if(board[x][y]!=0){}
		else
		{
			board[x][y]=1;
			break;
		}
	}while(1);
}
void loadImage()//图片载入 
{
	char imgName[40];
	//数字图片 初始化 
	for (int i = 1, num = 2; i < NUM_BLOCK; i++, num *= 2) 
	{
		blockImgs[i] = newimage();//声明 
		sprintf(imgName, "resource\\image\\block_%d.png", num);//字符串赋值 
		getimage(blockImgs[i], imgName);//图片对象赋值 
	}
	//底图 初始化 
	backgroundImg = newimage();
	getimage(backgroundImg, "resource\\image\\background.png");
}
void start()//初始化 
{
	initgraph(500, 500);//图形初始化 
	setbkcolor(WHITE);
	srand(time(0));//随机数初始化 
	loadImage();//图片载入 
	
	setfont(25,0,"幼圆");//(字体高度,字体宽度(为0即为自适应),字形)设置字体为25,幼圆字体
	setbkmode(TRANSPARENT); //设置文字背景色为透明(默认为有背景色)
}
void draw()//图形绘制 
{
	putimage_withalpha(NULL, backgroundImg, 0, 0);//绘制带透明通道的图像 

	for (int i = 0; i < 4; i++) 
	for (int j = 0; j < 4; j++) 
	{
		int x = (j + 1) * DEVIDE + j * GRID_WIDTH;
		int y =  (i + 1) * DEVIDE + i * GRID_WIDTH;

		if (board[i][j] != 0)
			putimage_withalpha(NULL, blockImgs[board[i][j]], x, y);	
	}
}
void update()//数据更新 
{
	switch(keyMsg.key)
	{
		case 'W':
			if(judgeUpSlide())	upSlide();
			break;
		case 'A':
			if(judgeLeftSlide())	leftSlide();
			break;
		case 'S':
			if(judgeDownSlide())	downSlide();
			break;
		case 'D':
			if(judgeRightSlide())	rightSlide();
			break;
		default:break;
	}
}
int main()
{
	start();//初始化 
	getRand();//产生随机数字 
	draw();//图形绘制 
	
	while(1/*!judgeOver()*/)
	{
		while(kbmsg()) 
		{
			keyMsg = getkey();
			if ((keyMsg.msg == key_msg_down)&&((keyMsg.key=='A')||(keyMsg.key=='S')||
			(keyMsg.key=='W')||(keyMsg.key=='D')))
			{
				update();
				getRand();
				cleardevice();
				draw();
			}
		}
		delay_fps(60);
	}
	
	xyprintf(200,300,"GAME OVER");
	getch();
	return 0;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-2-13 05:34 , Processed in 0.055229 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表