#include<bits/stdc++.h>
using namespace std;
int tu[4][4];
bool k=0;
bool f=0;
void xianshi(){
bool f=0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(tu[i][j]==tu[i][j+1]){
f=1;
break;
}
if(tu[i][j]==tu[i+1][j]){
f=1;
break;
}
if(j>0){
if(tu[i][j]==tu[i][j-1]){
f=1;
break;
}
}
if(i>0){
if(tu[i][j]==tu[i-1][j]){
f=1;
break;
}
}
}
if(f==1){
break;
}
}
bool k=0;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
if(tu[i][j]==2048){
k=1;
}
cout<<tu[i][j]<<" ";
}
cout<<'\n';
}
if(f==0){
cout<<"game over !!!!!";
return;
}
if(k==1){
cout<<"you win !!!!!!!!!!";
return;
}
}
void yidong(char x){
if(x=='w'){
for(int i=1;i<4;i++){
for(int j=0;j<4;j++){
if(tu[i][j]!=0){
int a=i;
while(a>0){
a--;
if(tu[a][j]==0){
if(a==0){
tu[a][j]=tu[i][j];
tu[i][j]=0;
break;
}
else continue;
}
else{
if(tu[a][j]==tu[i][j]){
tu[a][j]=tu[a][j]+tu[i][j];
tu[i][j]=0;
break;
}
else{
tu[a+1][j]=tu[i][j];
tu[i][j]=0;
break;
}
}
}
}
}
}
}
if(x=='s'){
for(int i=2;i>=0;i--){
for(int j=0;j<4;j++){
if(tu[i][j]!=0){
int a=i;
while(a<3){
a++;
if(tu[a][j]==0){
if(a==3){
tu[a][j]=tu[i][j];
tu[i][j]=0;
break;
}
else continue;
}
else{
if(tu[a][j]==tu[i][j]){
tu[a][j]=tu[a][j]+tu[i][j];
tu[i][j]=0;
break;
}
else{
tu[a-1][j]=tu[i][j];
tu[i][j]=0;
break;
}
}
}
}
}
}
}
if(x=='a'){
for(int j=1;j<4;j++){
for(int i=0;i<4;i++){
if(tu[i][j]!=0){
int b=j;
while(b>0){
b--;
if(tu[b][j]==0){
if(b==0){
tu[b][j]=tu[i][j];
tu[i][j]=0;
break;
}
else continue;
}
else{
if(tu[b][j]==tu[i][j]){
tu[b][j]=tu[b][j]+tu[i][j];
tu[i][j]=0;
break;
}
else{
tu[b+1][j]=tu[i][j];
tu[i][j]=0;
break;
}
}
}
}
}
}
}
if(x=='d'){
for(int j=2;j>=0;j--){
for(int i=0;i<4;i++){
if(tu[i][j]!=0){
int b=j;
while(b<3){
b++;
if(tu[b][j]==0){
if(b==3){
tu[b][j]=tu[i][j];
tu[i][j]=0;
break;
}
else continue;
}
else{
if(tu[b][j]==tu[i][j]){
tu[b][j]=tu[b][j]+tu[i][j];
tu[i][j]=0;
break;
}
else{
tu[b-1][j]=tu[i][j];
tu[i][j]=0;
break;
}
}
}
}
}
}
}
}
int main(){
srand((unsigned)time(NULL));
cout<<"2048:输入'w s a d'分别对应'上下左右'控制方向";
while(1==1){
int chux,chuy;
while(1==1){
int chux=rand()%4,chuy=rand()%4;
if(tu[chux][chuy]==0){
break;
}
}
if(chux%2!=0){
tu[chux][chuy]=2;
}
else{
tu[chux][chuy]=4;
}
xianshi();
if(f==0){
return 0;
}
if(k==1){
return 0;
}
char fang;
cin>>fang;
if(fang=='w'){
yidong('w');
}
else if(fang=='s'){
yidong('s');
}
else if(fang=='a'){
yidong('a');
}
else if(fang=='d'){
yidong('d');
}
else{
cout<<"输错了";
return 0;
}
}
return 0;
}
各位万能的程序员,我想写一个2048的小游戏,但以上代码运行后出现:
请问该如何解决呢?
谢谢!!