1. //
    2. // main.c
    3. // test_a7
    4. //
    5. // Created by dezhu on 2021/12/27.
    6. // Copyright © 2021年 dezhu. All rights reserved.
    7. //
    8. #include<stdio.h>
    9. #include <graphics.h>
    10. #include <conio.h>
    11. #include <windows.h>
    12. #include <stdlib.h>
    13. #include<time.h>
    14. int hight = 800;
    15. int width = 800;
    16. int cube_x,cube_y;
    17. int kind;
    18. int v=0;
    19. int a;
    20. int bottom_y;
    21. int bottom_x[4];
    22. int view[800][800] = {0};
    23. void updatewithpeople();
    24. void updatewithoutpeople();
    25. void star();
    26. void show();
    27. void gameover();
    28. void search();
    29. int main(){
    30. star();
    31. while(1){
    32. updatewithpeople();
    33. updatewithoutpeople();
    34. show();
    35. }
    36. return 0;
    37. }
    38. void updatewithpeople(){
    39. if(GetAsyncKeyState(0x41)&0x8000){
    40. Sleep(10);
    41. if(GetAsyncKeyState(0x41)&0x8000){
    42. if(cube_x>=0){
    43. cube_x-=40;
    44. switch(kind){
    45. case 0:view[cube_x+80][cube_y]=0;view[cube_x+80][cube_y+40]=0;break;
    46. case 1:view[cube_x+80][cube_y]=0;view[cube_x+80][cube_y+40]=0;break;
    47. case 2:view[cube_x+80][cube_y]=0;view[cube_x+120][cube_y+40]=0;break;
    48. case 3:view[cube_x+80][cube_y]=0;view[cube_x+40][cube_y+40]=0;break;
    49. case 4:view[cube_x+160][cube_y]=0;break;
    50. case 5:view[cube_x+40][cube_y]=0;view[cube_x+120][cube_y+40]=0;break;
    51. case 6:view[cube_x+40][cube_y]=0;view[cube_x+40][cube_y+40]=0;break;
    52. case 7:view[cube_x+40][cube_y]=0;view[cube_x+80][cube_y+40]=0;break;
    53. }
    54. }
    55. }
    56. while(GetAsyncKeyState(0x41)&0x8000);
    57. }
    58. if(GetAsyncKeyState(0x44)&0x8000){
    59. Sleep(10);
    60. if(GetAsyncKeyState(0x44)&0x8000)
    61. {
    62. if(cube_x<=800)
    63. {
    64. cube_x+=40;
    65. switch(kind)
    66. {
    67. case 0:view[cube_x-40][cube_y]=0;view[cube_x-40][cube_y+40]=0;break;
    68. case 1:view[cube_x-40][cube_y]=0;view[cube_x-40][cube_y+40]=0;break;
    69. case 2:view[cube_x-40][cube_y]=0;view[cube_x][cube_y+40]=0;break;
    70. case 3:view[cube_x-40][cube_y]=0;view[cube_x-80][cube_y+40]=0;break;
    71. case 4:view[cube_x-40][cube_y]=0;break;
    72. case 5:view[cube_x-40][cube_y]=0;view[cube_x-40][cube_y+40]=0;break;
    73. case 6:view[cube_x-40][cube_y]=0;view[cube_x-120][cube_y+40]=0;break;
    74. case 7:view[cube_x-40][cube_y]=0;view[cube_x-80][cube_y+40]=0;break;
    75. }
    76. }
    77. }
    78. while(GetAsyncKeyState(0x44)&0x8000);
    79. }
    80. if(GetAsyncKeyState(VK_SPACE)&0x8000){
    81. Sleep(10);
    82. if(GetAsyncKeyState(VK_SPACE)&0x8000){
    83. switch(kind){
    84. case 0:break;
    85. case 1:break;
    86. case 2:break;
    87. case 3:break;
    88. case 4:break;
    89. case 5:break;
    90. case 6:break;
    91. case 7:break;
    92. }
    93. }
    94. while(GetAsyncKeyState(VK_SPACE)&0x8000);
    95. }
    96. }
    97. void updatewithoutpeople(){
    98. int j,k;
    99. int x,y;
    100. srand(time(NULL));
    101. if(v==0){
    102. cube_x=400;
    103. cube_y=0;
    104. kind=rand()%7; //
    105. v=1;//
    106. }
    107. if(kind==4)
    108. bottom_y=cube_y;
    109. else
    110. bottom_y=cube_y+40;
    111. switch(kind){
    112. case 0:
    113. view[cube_x][cube_y]=0;
    114. view[cube_x+40][cube_y]=0;
    115. view[cube_x][cube_y+40]=0;
    116. view[cube_x+40][cube_y+40]=0;break;
    117. case 1:
    118. view[cube_x][cube_y]=0;
    119. view[cube_x+40][cube_y]=0;
    120. view[cube_x][cube_y+40]=0;
    121. view[cube_x+40][cube_y+40]=0;break;
    122. case 2:
    123. view[cube_x][cube_y]=0;
    124. view[cube_x+40][cube_y]=0;
    125. view[cube_x+40][cube_y+40]=0;
    126. view[cube_x+80][cube_y+40]=0;break;
    127. case 3:
    128. view[cube_x][cube_y]=0;
    129. view[cube_x+40][cube_y]=0;
    130. view[cube_x][cube_y+40]=0;
    131. view[cube_x-40][cube_y+40]=0;break;
    132. case 4:
    133. view[cube_x][cube_y]=0;
    134. view[cube_x+40][cube_y]=0;
    135. view[cube_x+80][cube_y]=0;
    136. view[cube_x+120][cube_y]=0;break;
    137. case 5:
    138. view[cube_x][cube_y]=0;
    139. view[cube_x][cube_y+40]=0;
    140. view[cube_x+40][cube_y+40]=0;
    141. view[cube_x+80][cube_y+40]=0;break;
    142. case 6:
    143. view[cube_x][cube_y]=0;
    144. view[cube_x][cube_y+40]=0;
    145. view[cube_x-40][cube_y+40]=0;
    146. view[cube_x-80][cube_y+40]=0;break;
    147. case 7:
    148. view[cube_x][cube_y]=0;
    149. view[cube_x][cube_y+40]=0;
    150. view[cube_x-40][cube_y+40]=0;
    151. view[cube_x+40][cube_y+40]=0;break;
    152. }
    153. switch(kind){
    154. case 0:
    155. if(view[cube_x][bottom_y+40]!=1&&bottom_y<760){
    156. a++;
    157. if(a>400)
    158. {
    159. cube_y+=40;
    160. a=0;
    161. }
    162. }
    163. else
    164. v=0;search();break;
    165. case 1:
    166. if(view[cube_x][bottom_y+40]!=1&&bottom_y<760){
    167. a++;
    168. if(a>400)
    169. {
    170. cube_y+=40;
    171. a=0;
    172. }
    173. }
    174. else
    175. v=0;search();break;
    176. case 2:
    177. if(view[cube_x+40][bottom_y+40]!=1&&view[cube_x+80][bottom_y+40]!=1&& bottom_y<760){
    178. a++;
    179. if(a>400)
    180. {
    181. cube_y+=40;
    182. a=0;
    183. }
    184. }
    185. else
    186. v=0;search();break;
    187. case 3:
    188. if(view[cube_x][bottom_y+40]!=1&&view[cube_x-40][bottom_y+40]!=1&&bottom_y<760){
    189. a++;
    190. if(a>400)
    191. {
    192. cube_y+=40;
    193. a=0;
    194. }
    195. }
    196. else
    197. v=0;search();break;
    198. case 4:
    199. if(view[cube_x][bottom_y+40]!=1&&view[cube_x+40][bottom_y+40]!=1&&view[cube_x+80][bottom_y+40]!=1&&view[cube_x+120][bottom_y+40]!=1&&bottom_y<760)
    200. {
    201. a++;
    202. if(a>200)
    203. {
    204. cube_y+=40;
    205. a=0;
    206. }
    207. }
    208. else
    209. v=0;search();break;
    210. case 5:
    211. if(view[cube_x][bottom_y+40]!=1&&view[cube_x+40][bottom_y+40]!=1&&view[cube_x+80][bottom_y+40]!=1&&bottom_y<760)
    212. {
    213. a++;
    214. if(a>400)
    215. {
    216. cube_y+=40;
    217. a=0;
    218. }
    219. }
    220. else
    221. v=0;search();break;
    222. case 6:
    223. if(view[cube_x][bottom_y+40]!=1&&view[cube_x-40][bottom_y+40]!=1&&view[cube_x-80][bottom_y+40]!=1&&bottom_y<760)
    224. {
    225. a++;
    226. if(a>400)
    227. {
    228. cube_y+=40;
    229. a=0;
    230. }
    231. }
    232. else
    233. v=0;search();break;
    234. case 7:
    235. if(view[cube_x][bottom_y+40]!=1&&view[cube_x+40][bottom_y+40]!=1&&view[cube_x-40][bottom_y+40]!=1&&bottom_y<760)
    236. {
    237. a++;
    238. if(a>400)
    239. {
    240. cube_y+=40;
    241. a=0;
    242. }
    243. }
    244. else
    245. v=0;search();break;
    246. }
    247. switch(kind){
    248. case 0:
    249. view[cube_x][cube_y]=1;
    250. view[cube_x+40][cube_y]=1;
    251. view[cube_x][cube_y+40]=1;
    252. view[cube_x+40][cube_y+40]=1;break;
    253. case 1:
    254. view[cube_x][cube_y]=1;
    255. view[cube_x+40][cube_y]=1;
    256. view[cube_x][cube_y+40]=1;
    257. view[cube_x+40][cube_y+40]=1;break;
    258. case 2:
    259. view[cube_x][cube_y]=1;
    260. view[cube_x+40][cube_y]=1;
    261. view[cube_x+40][cube_y+40]=1;
    262. view[cube_x+80][cube_y+40]=1;break;
    263. case 3:
    264. view[cube_x][cube_y]=1;
    265. view[cube_x+40][cube_y]=1;
    266. view[cube_x][cube_y+40]=1;
    267. view[cube_x-40][cube_y+40]=1;break;
    268. case 4:
    269. view[cube_x][cube_y]=1;
    270. view[cube_x+40][cube_y]=1;
    271. view[cube_x+80][cube_y]=1;
    272. view[cube_x+120][cube_y]=1;break;
    273. case 5:
    274. view[cube_x][cube_y]=1;
    275. view[cube_x][cube_y+40]=1;
    276. view[cube_x+40][cube_y+40]=1;
    277. view[cube_x+80][cube_y+40]=1;break;
    278. case 6:
    279. view[cube_x][cube_y]=1;
    280. view[cube_x][cube_y+40]=1;
    281. view[cube_x-40][cube_y+40]=1;
    282. view[cube_x-80][cube_y+40]=1;break;
    283. case 7:
    284. view[cube_x][cube_y]=1;
    285. view[cube_x][cube_y+40]=1;
    286. view[cube_x-40][cube_y+40]=1;
    287. view[cube_x+40][cube_y+40]=1;break;
    288. }
    289. }
    290. void star(){
    291. cube_x=400;//
    292. cube_y=0;
    293. view[cube_x][cube_y]=1;
    294. initgraph(hight, width);//
    295. }
    296. void show(){
    297. srand(time(NULL));
    298. BeginBatchDraw();
    299. int x,y;
    300. cleardevice();
    301. for(x=0;x<800;x+=40){
    302. line(x,0,x,800);
    303. }
    304. for(y=0;y<800;y+=40){
    305. line(0,y,800,y);
    306. }
    307. setlinecolor(RGB(255,255,255));
    308. if(v==0){
    309. setfillcolor(RGB(rand()%255,rand()%255,rand()%255));//
    310. }
    311. for(x=0;x<800;x+=40)
    312. for(y=0;y<800;y+=40){
    313. if(view[x][y]==1||view[x][y]==2)
    314. fillrectangle(x,y,x+40,y+40);
    315. }
    316. FlushBatchDraw();
    317. }
    318. void gameover(){}
    319. void search(){
    320. int x,y,j;
    321. int number=0;
    322. for(y=0;y<800;y+=40){
    323. for(x=0;x<800;x+=40){
    324. if(view[x][y]==1)
    325. {
    326. number++;
    327. }
    328. }
    329. if(number==20){
    330. j=0;
    331. while(j<=760){
    332. view[j][y]=0;
    333. j+=40;
    334. }
    335. j=y-40;
    336. for(;j>=0;j-=40)
    337. for(x=0;x<800;x+=40){
    338. if(view[x][j]==1){
    339. view[x][j]=0;
    340. view[x][j+40]=1;
    341. }
    342. }
    343. }
    344. number=0;
    345. }
    346. }