专栏文章
easyx2048
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mipyojle
- 此快照首次捕获于
- 2025/12/03 20:06 3 个月前
- 此快照最后确认于
- 2025/12/03 20:06 3 个月前
CPP
#include<bits/stdc++.h>
#include<easyx.h>
#include<graphics.h>
#define int long long
using namespace std;
int a[6][6]={0};
bool p[6][6]={0};
int fx[8]={-1,1,0,0,0,0,-1,1};
int point=0,fx_=0,wx=0,wy=0;
void jz(int x,int y,LPCTSTR s,int daxiao);
void csh();
bool sx();
signed main(){
srand(time(NULL));
initgraph(600,600,1);
// csh();
sx();
setbkmode(TRANSPARENT);
while(1){
TCHAR atchar[1000];
_stprintf(atchar,_T("%d"),point);
outtextxy(300-textwidth(atchar)/2,25,atchar);
BeginBatchDraw();
setlinestyle(PS_SOLID,5);
for(int i=1;i<=5;i++){
line(100,i*100,500,i*100);
}
for(int i=1;i<=5;i++){
line(i*100,100,i*100,500);
}
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
switch(a[i][j]){
case 1:{
setfillcolor(RGB(255,150,150));
break;
}
case 2:{
setfillcolor(RGB(253,173,125));
break;
}
case 4:{
setfillcolor(RGB(252,239,126));
break;
}
case 8:{
setfillcolor(RGB(153,254,124));
break;
}
case 16:{
setfillcolor(RGB(172,253,226));
break;
}
case 32:{
setfillcolor(RGB(122,115,253));
break;
}
case 64:{
setfillcolor(RGB(193,122,245));
break;
}
case 128:{
setfillcolor(RGB(247,166,240));
break;
}
case 256:{
setfillcolor(RGB(0,128,64));
break;
}
case 512:{
setfillcolor(RGB(128,64,0));
break;
}
case 1024:{
setfillcolor(RGB(128,128,128));
break;
}
case 2048:{
setfillcolor(RGB(10,0,86));
break;
}
case 4096:{
setfillcolor(RGB(11,45,14));
break;
}
case 8192:{
setfillcolor(RGB(121,24,65));
break;
}
case 16384:{
setfillcolor(RGB(89,36,92));
break;
}
case 32768:{
setfillcolor(RGB(16,94,13));
break;
}
}
if(a[i][j]!=0){
TCHAR tchar[1000];
_stprintf(tchar,_T("%d"),a[i][j]);
int td=a[i][j],w=0;
while(td){
td/=10;
w++;
}
solidrectangle(j*100+4,i*100+4,j*100+100-4,i*100+100-4);
jz(j*100+2,i*100+2,tchar,65-6*w);
}
}
}
ExMessage msg={0};
peekmessage(&msg,EX_KEY);
if(msg.message==WM_KEYDOWN&&(msg.vkcode=='W'||msg.vkcode=='A'||msg.vkcode=='S'||msg.vkcode=='D')){
memset(p,0,sizeof(p));
switch(msg.vkcode){
case 'W':{
fx_=0;
break;
}
case 'S':{
fx_=1;
break;
}
case 'A':{
fx_=2;
break;
}
case 'D':{
fx_=3;
break;
}
}
for(int c=1;c<=4;c++){
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
int u=i+fx[fx_],v=j+fx[4+fx_];
if(a[u][v]==0&&u>=1&&u<=4&&v>=1&&v<=4){
a[u][v]=a[i][j];
a[i][j]=0;
}
}
}
}
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
int u=i+fx[fx_],v=j+fx[4+fx_];
if(a[u][v]==a[i][j]&&a[i][j]!=0&&p[i][j]==0){
a[u][v]=a[i][j]*2;
point+=a[i][j];
a[i][j]=0;
p[u][v]=1;
}
}
}
for(int c=1;c<=4;c++){
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
int u=i+fx[fx_],v=j+fx[4+fx_];
if(a[u][v]==0&&u>=1&&u<=4&&v>=1&&v<=4){
a[u][v]=a[i][j];
a[i][j]=0;
}
}
}
}
if(sx()==0){
EndBatchDraw();
_sleep(3000);
return 0;
}
}
EndBatchDraw();
cleardevice();
}
}
void jz(int x,int y,LPCTSTR jz_s,int daxiao){
settextstyle(daxiao,0,"楷体");
int w=textwidth(jz_s),h=textheight(jz_s);
outtextxy(x-w/2+50,y-h/2+50,jz_s);
}
void csh(){
int t=0;
for(int i=1;i<=4;i++){
for(int j=1;j<=4;j++){
a[i][j]=pow(2,t++);
}
}
}
bool sx(){
bool p=0;
for(int ii=1;ii<=4;ii++){
for(int jj=1;jj<=4;jj++){
if(a[ii][jj]==0){
p=1;
break;
}
}
}
if(p==0){
return false;
}
wx=0,wy=0;
while((wx==0&&wy==0)||a[wx][wy]!=0){
wx=rand()%4+1,wy=rand()%4+1;
}
int xixi=1+rand()%100;
if(xixi<=90){
a[wx][wy]=1;
}else if(xixi>=91&&xixi<=98){
a[wx][wy]=2;
}else{
a[wx][wy]=4;
}
return true;
}
//原创:cyx1234
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...