Skip to content

Commit 44663f0

Browse files
authored
Add files via upload
0 parents  commit 44663f0

File tree

1 file changed

+150
-0
lines changed

1 file changed

+150
-0
lines changed

1.cpp

+150
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
#include<iostream>
2+
#include<stdlib.h>
3+
#include<cstdlib>
4+
#include<ctime>
5+
#include<conio.h>
6+
using namespace std;
7+
void begin() , change( int s ) , gm();
8+
bool go() , gyj( int x , int y , char z );
9+
int a[4][4];
10+
int main(){
11+
srand( (int) time (0) );
12+
int time;
13+
cout << "按任意键开始";
14+
getch();
15+
begin();
16+
time = clock();
17+
gm();
18+
system("cls");
19+
cout << "你赢了!\n用时" << ( clock() - time ) / 60000 << "" << (( clock() - time ) / 1000 ) % 60 << "" << endl;;
20+
system("pause");
21+
}
22+
void begin(){ //将15个数字打乱
23+
char z;
24+
int erb[15] , k , l = 0;
25+
for( int i = 0 ; i < 14 ; i++ ){
26+
erb[i] = 99;
27+
}
28+
for( int i = 0 ; i < 4 ; i++ ){
29+
for( int j = 0 ; j < 4 ; j++ ){
30+
if( i == 3 && j == 3 ){
31+
break;
32+
}
33+
aaa:;
34+
k = rand() % 16;
35+
for( int x = 0 ; x < 16 ; x++ ){
36+
if( k == erb[x] || k == 0 ){
37+
goto aaa;
38+
}
39+
}
40+
a[i][j] = k;
41+
erb[l] = k;
42+
l++;
43+
}
44+
}
45+
}
46+
void change( int s ){ //将数字工整地输出
47+
char x;
48+
switch( s ){
49+
case 1 : cout << "1 ";break;
50+
case 2 : cout << "2 ";break;
51+
case 3 : cout << "3 ";break;
52+
case 4 : cout << "4 ";break;
53+
case 5 : cout << "5 ";break;
54+
case 6 : cout << "6 ";break;
55+
case 7 : cout << "7 ";break;
56+
case 8 : cout << "8 ";break;
57+
case 9 : cout << "9 ";break;
58+
case 10 : cout << "10";break;
59+
case 11 : cout << "11";break;
60+
case 12 : cout << "12";break;
61+
case 13 : cout << "13";break;
62+
case 14 : cout << "14";break;
63+
case 15 : cout << "15";break;
64+
default: cout << " ";break;
65+
}
66+
}
67+
void gm(){ //游戏主体部分
68+
char z;
69+
int k_i = 3 , k_j = 3 , t;
70+
for( ; ; ){
71+
if( go() == 0 ){
72+
break;
73+
}
74+
system("cls");
75+
for( int i = 0 ; i < 4 ; i++ ){
76+
for( int j = 0 ; j < 4 ; j++ ){
77+
change( a[i][j] );
78+
cout << ' ';
79+
}
80+
cout << endl;
81+
}
82+
z = getch();
83+
if( gyj( k_i , k_j , z ) == 1 ){}
84+
else if( z == 'w' || z == 'W' ){
85+
t = a[k_i - 1][k_j];
86+
a[k_i - 1][k_j] = 0;
87+
a[k_i][k_j] = t;
88+
k_i--;
89+
}
90+
else if( z == 's' || z == 'S' ){
91+
t = a[k_i + 1][k_j];
92+
a[k_i + 1][k_j] = 0;
93+
a[k_i][k_j] = t;
94+
k_i++;
95+
}
96+
else if( z == 'a' || z == 'Z' ){
97+
t = a[k_i][k_j - 1];
98+
a[k_i][k_j - 1] = 0;
99+
a[k_i][k_j] = t;
100+
k_j--;
101+
}
102+
else if( z == 'd' || z == 'D' ){
103+
t = a[k_i][k_j + 1];
104+
a[k_i][k_j + 1] = 0;
105+
a[k_i][k_j] = t;
106+
k_j++;
107+
}
108+
}
109+
}
110+
bool go(){ //检查有没有赢,15个数字有没有归位
111+
int z = 0 , k = 0;
112+
for( int i = 0 ; i < 4 ; i++ ){
113+
for( int j = 0 ; j < 4 ; j++ ){
114+
if( i == 3 && j == 3){
115+
break;
116+
}
117+
z++;
118+
if( a[i][j] != z ){
119+
k = 1;
120+
goto bbb;
121+
}
122+
}
123+
}
124+
bbb:;
125+
return k;
126+
}
127+
bool gyj( int x , int y , char z ){ //检测有没有数组越界
128+
int t = 0;
129+
if( x == 0 ){
130+
if( z == 'w' || z == 'W' ){
131+
t = 1;
132+
}
133+
}
134+
if( x == 3 ){
135+
if( z == 's'|| z == 'S' ){
136+
t = 1;
137+
}
138+
}
139+
if( y == 0 ){
140+
if( z == 'a'|| z == 'A' ){
141+
t = 1;
142+
}
143+
}
144+
if( y == 3 ){
145+
if( z == 'd'|| z == 'D' ){
146+
t = 1;
147+
}
148+
}
149+
return t;
150+
}

0 commit comments

Comments
 (0)