鱼C论坛

 找回密码
 立即注册
查看: 2795|回复: 5

[技术交流] 第一次写的小游戏

[复制链接]
发表于 2014-8-16 20:53:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
本帖最后由 1798927139 于 2014-8-16 21:27 编辑

  1. <P> </P>
  2. <DIV class=blockcode>
  3. <BLOCKQUOTE>
  4. <P><I><I><I><I><I><I><I><I><I></I></I></I></I></I></I></I></I></I> </P>

  5. #include <windows.h>
  6. #include <stdio.h>
  7. #include <conio.h>
  8. #include <stdlib.h>
  9. #include <time.h>
  10. #define KEY_UP 72
  11. #define KEY_DOWN 80
  12. #define KEY_LEFT 75
  13. #define KEY_RIGHT 77
  14. #define KEY_Q 27
  15. #define YES 121
  16. #define NO 110
  17. #define KEY_KONG 32
  18. static int n[19][44];
  19. static int xin;
  20. static int scores;
  21. static int pass;
  22. static int fen=0;
  23. static int t;
  24. static int choise;
  25. static int z;
  26. static int hit;
  27. static int w;
  28. static int a;
  29. static int s;
  30. static int d;
  31. void ini()
  32. {
  33. int i,j;
  34. srand(time(NULL));
  35. if(pass!=4)
  36. {
  37. for(j=0;j<19;j++)
  38. {
  39. for(i=0;i<44;i++)
  40. {
  41. n[j]=rand()%25;
  42. if(n[j]==8)
  43. {
  44. n[j]=0;
  45. }
  46. }

  47. }

  48. }
  49. if(pass==4)
  50. {
  51. for(j=0;j<19;j++)
  52. {
  53. for(i=0;i<44;i++)
  54. {
  55. n[j]=0;
  56. }
  57. }
  58. n[10][40]=1;
  59. n[17][1]=8;
  60. }
  61. n[0][0]=0;

  62. }
  63. void gotoxy(int X, int Y)
  64. {

  65. HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
  66. COORD pos;
  67. pos.X = X;
  68. pos.Y = Y;
  69. SetConsoleCursorPosition(hOut,pos);

  70. }
  71. void draw()
  72. {
  73. int i,j,k;
  74. gotoxy(10,3);
  75. for(i=0;i<60;i++)printf("-");
  76. for(i=0;i<20;i++)
  77. {
  78. gotoxy(10,4+i);
  79. printf("|");
  80. for(j=0;j<45;j++)
  81. {
  82. printf(" ");
  83. }
  84. printf("|");
  85. for(k=0;k<12;k++)
  86. {
  87. printf(" ");
  88. }
  89. printf("|\n");
  90. }
  91. gotoxy(10,23);
  92. for(i=0;i<60;i++)printf("-");
  93. gotoxy(60,4);
  94. printf("第%d关",pass);
  95. gotoxy(57,10);
  96. printf("游戏说明:");
  97. gotoxy(57,11);
  98. printf("按上下左右控");
  99. gotoxy(57,12);
  100. printf("制小脸(%c),吃",2);
  101. gotoxy(59,13);
  102. printf("完心(%c)。",3);
  103. gotoxy(59,15);
  104. printf("Esc退出。");
  105. gotoxy(57,16);
  106. printf("警告:");
  107. gotoxy(57,17);
  108. printf("不能越界!!!");
  109. gotoxy(57,19);
  110. printf("公告:");
  111. if(pass!=1)
  112. {
  113. gotoxy(57,18);
  114. printf("不能碰到(%c)。",1);
  115. }
  116. if(pass==3)
  117. {
  118. gotoxy(58,14);
  119. printf("按空格击打。");

  120. }
  121. }
  122. void man(int x,int y,int nx,int ny)
  123. {
  124. gotoxy(x,y);
  125. printf(" ");
  126. gotoxy(nx,ny);
  127. printf("%c",2);

  128. }
  129. void jida(int x,int y,int nx,int ny)
  130. {
  131. if(hit==1)
  132. {
  133. if(pass==3||pass==4)
  134. {
  135. if(a==1)
  136. {

  137. gotoxy(nx-1,ny);
  138. printf("%c",27);
  139. Sleep(250);
  140. gotoxy(nx-1,ny);
  141. if(n[ny-11][nx-5]!=1)//n[y-4][x-11]
  142. printf(" ");

  143. }
  144. if(d==1)
  145. {

  146. gotoxy(nx+1,ny);
  147. printf("%c",26);
  148. Sleep(250);
  149. gotoxy(nx+1,ny);
  150. if(n[ny-11][nx-3]!=1)
  151. printf(" ");

  152. }
  153. if(w==1)
  154. {

  155. gotoxy(nx,ny-1);
  156. printf("%c",24);
  157. Sleep(250);
  158. gotoxy(nx,ny-1);
  159. if(n[ny-12][nx-4]!=1)
  160. printf(" ");

  161. }
  162. if(s==1)
  163. {

  164. gotoxy(nx,ny+1);
  165. printf("%c",25);
  166. Sleep(250);
  167. gotoxy(nx,ny+1);
  168. if(n[ny-10][nx-4]!=1)
  169. printf(" ");
  170. }
  171. }
  172. }
  173. }
  174. void map()
  175. {
  176. int i,j,an=0;
  177. ini();
  178. for(j=0;j<19;j++)
  179. {
  180. gotoxy(11,4+j);
  181. for(i=0;i<44;i++)
  182. {
  183. if(n[j]==1)
  184. {
  185. printf("%c",3);
  186. xin++;

  187. }
  188. else if(pass==2&&n[j]==2)
  189. {
  190. printf("%c",1);
  191. }
  192. else if(pass==3&&n[j]==2||pass==4&&n[j]==2)
  193. {
  194. printf("%c",1);
  195. an++;
  196. }
  197. else if(pass==4&&n[j]==8)
  198. {
  199. printf("%c",15);
  200. }
  201. else
  202. {
  203. printf(" ");
  204. }

  205. }

  206. printf("\n");
  207. }
  208. if(pass==3||pass==4)
  209. {
  210. xin=xin+an;
  211. }
  212. gotoxy(57,5);
  213. printf("本关共有%d%c",xin,3);
  214. }
  215. void die(int x,int y)
  216. {
  217. choise=1;
  218. if(x<11||x>55||y<4||y>22)//任务活动区域为x(11,55),y(4,22)。这是实验的结果。
  219. {
  220. choise=0;
  221. gotoxy(23,13);
  222. printf("你过界了,去死把!!!\n\n\n\n\n\n\n\n\n\n\n");
  223. getch();
  224. draw();
  225. gotoxy(23,13);
  226. printf("你是否还要进行新的游戏(y/n):");

  227. }
  228. if(pass!=1)
  229. {
  230. if(n[y-4][x-11]==2)//被吃掉
  231. {
  232. choise=0;
  233. gotoxy(23,13);
  234. printf("你的肉真好吃哈哈~~~\n\n\n\n\n\n\n\n\n\n\n");
  235. getch();
  236. draw();
  237. gotoxy(23,13);
  238. printf("你是否继续的游戏(y/n):");

  239. }
  240. }

  241. }
  242. void over()
  243. {
  244. int i;
  245. draw();
  246. for(i=4;i<12;i++)
  247. {
  248. Sleep(250);
  249. gotoxy(23,i+1);
  250. printf("感谢你的使用。O(∩_∩)O~");
  251. gotoxy(23,25-i);
  252. printf("制作人:朱肖安。");
  253. gotoxy(23,i);
  254. printf(" ");
  255. gotoxy(23,26-i);
  256. printf(" ");
  257. }
  258. Sleep(2000);
  259. gotoxy(0,24);
  260. exit(0);
  261. }
  262. void score(int x,int y)
  263. {
  264. if(n[y-4][x-11]==1)
  265. {
  266. scores+=1;
  267. fen+=1;
  268. n[y-4][x-11]=0;
  269. }
  270. gotoxy(60,7);
  271. printf("得分:%d",scores);
  272. gotoxy(59,6);
  273. printf("总得分:%d",fen);
  274. gotoxy(57,8);
  275. printf("当前坐标:");
  276. gotoxy(60,9);
  277. printf("(%d,%d)",x-11,y-4);
  278. }
  279. void win()
  280. {
  281. int i;
  282. if(pass!=4)
  283. {
  284. if(scores==xin)
  285. {
  286. draw();
  287. pass++;
  288. for(i=4;i<14;i++)
  289. {


  290. Sleep(250);
  291. gotoxy(23,i+1);
  292. printf("恭喜你胜利!!!");
  293. gotoxy(23,i);
  294. printf(" ");

  295. }
  296. t=1;
  297. }
  298. }
  299. if(pass==4&&scores==1)
  300. {
  301. for(i=4;i<14;i++)
  302. {


  303. Sleep(250);
  304. gotoxy(23,i+1);
  305. printf("恭喜你通关!!!");
  306. gotoxy(23,i);
  307. printf(" ");

  308. }
  309. gotoxy(58,21);
  310. printf("通关!!!");
  311. over();

  312. }
  313. }
  314. void announcement()
  315. {
  316. if(scores==xin/3)
  317. {
  318. gotoxy(60,21);
  319. printf("赞!!!");
  320. }
  321. else if(scores==xin/3*2)
  322. {
  323. gotoxy(59,21);
  324. printf("超赞!!!");
  325. }
  326. else if(scores==xin-1)
  327. {
  328. gotoxy(58,21);
  329. printf("不得不赞!!!");
  330. }

  331. }
  332. void fabao()
  333. {
  334. int i,w;
  335. if(pass==3&&z==1)
  336. {
  337. draw();
  338. gotoxy(31,14);
  339. printf("%c",2);
  340. gotoxy(59,20);
  341. printf("恭喜你获得");
  342. gotoxy(60,21);
  343. printf("法宝!!!");
  344. for(i=5;i<=14;i++)
  345. {
  346. Sleep(500);
  347. gotoxy(32,i);
  348. printf("%c",26);
  349. gotoxy(32,i-1);
  350. printf(" ");
  351. }
  352. z=0;
  353. Sleep(1500);
  354. }
  355. }
  356. void kill(int nx,int ny)
  357. {
  358. if(n[ny-5][nx-11]==2&&w==1||n[ny-3][nx-11]==2&&w==1)//n[y-4][x-11]
  359. {
  360. if(n[ny-5][nx-11]!=8)
  361. {
  362. n[ny-5][nx-11]=1;
  363. gotoxy(nx,ny-1);
  364. printf("%c",3);
  365. }
  366. if(n[ny-5][nx-11]==8)//n[y-4][x-11]
  367. {
  368. n[17][1]=9;
  369. gotoxy(nx,ny-1);
  370. printf(" ");
  371. }
  372. }
  373. if(n[ny-3][nx-11]==2&&s==1||n[ny-4][nx-12]==8&&s==1)//n[y-4][x-11]
  374. {
  375. if(n[ny-3][nx-11]!=8)
  376. {
  377. n[ny-3][nx-11]=1;
  378. gotoxy(nx,ny+1);
  379. printf("%c",3);
  380. }
  381. if(n[ny-3][nx-11]==8)
  382. {
  383. n[17][1]=9;
  384. gotoxy(nx,ny+1);
  385. printf(" ");
  386. }
  387. }
  388. if(n[ny-4][nx-12]==2&&a==1||n[ny-4][nx-12]==8&&a==1)//n[y-4][x-11]
  389. {
  390. if(n[ny-4][nx-12]!=8)
  391. {
  392. n[ny-4][nx-12]=1;
  393. gotoxy(nx-1,ny);
  394. printf("%c",3);
  395. }
  396. if(n[ny-4][nx-12]==8)
  397. {
  398. n[17][1]=9;
  399. gotoxy(nx-1,ny);
  400. printf("%c",14);
  401. }
  402. }
  403. if(n[ny-4][nx-10]==2&&d==1||n[ny-3][nx-11]==2&&d==1)//n[y-4][x-11]
  404. {
  405. if(n[ny-4][nx-10]!=8)
  406. {
  407. n[ny-4][nx-10]=1;
  408. gotoxy(nx+1,ny);
  409. printf("%c",3);
  410. }
  411. if(n[ny-4][nx-10]==8)
  412. {
  413. n[17][1]=9;
  414. gotoxy(nx+1,ny);
  415. printf(" ");
  416. }
  417. }

  418. }
  419. void die1(int x,int y)
  420. {
  421. choise=1;
  422. if(pass==3||pass==4)
  423. {
  424. if(n[y-5][x-11]==1&&hit==1&&w==1||n[y-3][x-11]==1&&hit==1&&s==1||n[y-4][x-12]==1&&hit==1&&a==1||n[y-4][x-10]==1&&hit==1&&d==1)//自杀
  425. {
  426. choise=0;
  427. gotoxy(23,13);
  428. printf("你已经死了~~~\n\n\n\n\n\n\n\n\n\n\n");
  429. getch();
  430. draw();
  431. gotoxy(23,13);
  432. printf("你是否继续的游戏(y/n):");

  433. }
  434. }

  435. }
  436. void die2(int x)
  437. {
  438. choise=1;

  439. if(x==36)//自杀
  440. {
  441. choise=0;
  442. gotoxy(23,13);
  443. printf("你已经自杀了~~~\n\n\n\n\n\n\n\n\n\n\n");
  444. getch();
  445. draw();
  446. gotoxy(23,13);
  447. printf("你是否继续的游戏(y/n):");

  448. }
  449. }
  450. void kaoyan(int x)
  451. {
  452. int i,j;
  453. if(pass==4&&x==36)
  454. {
  455. for(j=0;j<45;j++)
  456. {

  457. for(i=0;i<19;i++)
  458. {
  459. gotoxy(55-j,4+i);
  460. printf("|");
  461. }

  462. Sleep(250);
  463. for(i=0;i<19;i++)
  464. {
  465. gotoxy(55-j,4+i);
  466. printf(" ");
  467. }
  468. }
  469. die2(x);
  470. }
  471. }

  472. void main(void)
  473. {
  474. int c,b,x,y,nx,ny,i,j,m=0;
  475. system("title 小人痴心");
  476. system("mode con cols=77 lines=25");
  477. system("color 72");
  478. choise=1;
  479. pass=1;
  480. t=1;
  481. z=1;
  482. while(1)
  483. {

  484. fabao();
  485. if(t==1)
  486. {
  487. xin=0;
  488. if(pass==1)
  489. {
  490. scores=0;
  491. }
  492. else if(pass!=1)
  493. {
  494. scores=0;
  495. xin=0;
  496. }
  497. x = nx = 11; y = ny = 4;
  498. draw();
  499. map();
  500. man(x,y,nx,ny);
  501. t=0;
  502. }
  503. win();
  504. announcement();
  505. c=getch();
  506. if(c==KEY_Q)
  507. {
  508. over();
  509. }
  510. if (224 == c&&choise==1)
  511. {
  512. b = getch();
  513. switch (b)
  514. {
  515. case KEY_UP:
  516. ny = y - 1;
  517. w=1;
  518. a=0;
  519. d=0;
  520. s=0;
  521. break;
  522. case KEY_DOWN:
  523. ny = y + 1;
  524. s=1;
  525. a=0;
  526. w=0;
  527. d=0;
  528. break;
  529. case KEY_LEFT:
  530. nx = x - 1;
  531. a=1;
  532. s=0;
  533. d=0;
  534. w=0;
  535. break;
  536. case KEY_RIGHT:
  537. nx = x + 1;
  538. d=1;
  539. a=0;
  540. s=0;
  541. w=0;
  542. break;
  543. }

  544. }
  545. else
  546. {
  547. if(choise!=1)
  548. {
  549. if(c==YES)//y键的值是121
  550. {
  551. t=1;
  552. choise=1;
  553. fen=fen-scores;
  554. }
  555. else if(c==NO)//n的值是110
  556. {
  557. over();
  558. }

  559. else
  560. {
  561. ;
  562. }

  563. }
  564. if(pass==3&&choise==1||pass==4&&choise==1)
  565. {
  566. if(c==KEY_KONG)
  567. {
  568. hit=1;
  569. jida(x,y,nx,ny);
  570. die1(x,y);
  571. kill(nx,ny);

  572. }
  573. }

  574. }
  575. if (x == nx && y == ny)
  576. {
  577. continue;
  578. }
  579. man(x,y,nx,ny);
  580. x = nx;
  581. y = ny;
  582. if(pass==4&&n[y-4][x-11]==8)
  583. {
  584. m=1;
  585. x=36;
  586. }
  587. if(pass==4&&n[17][1]==9)
  588. {
  589. n[17][1]=0;
  590. gotoxy(11,21);// n[17][1]=8;
  591. printf(" ");
  592. gotoxy(12,54);
  593. printf("%c",2);
  594. x=54;
  595. y=12;
  596. }
  597. score(x,y);
  598. die(x,y);
  599. kaoyan(x);
  600. if(m==1)
  601. {
  602. x=12;
  603. m=0;
  604. }
  605. hit=0;
  606. }
  607. }

复制代码


QQ图片20140816203916.jpg
QQ图片20140816203910.jpg
QQ图片20140816203852.jpg
QQ图片20140816203901.jpg
QQ图片20140816204000.jpg
QQ图片20140816203838.jpg
QQ图片20140816203936.jpg
QQ图片20140816203954.jpg
QQ图片20140816203942.jpg
QQ图片20140816203947.jpg
QQ图片20140816203924.jpg
QQ图片20140816203930.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-16 20:54:41 | 显示全部楼层
本帖最后由 ColbySuns 于 2014-8-16 20:56 编辑

火钳留名!!!!
点这个↓↓
0U`BKH{J5C9ZVWK@~Y`(Y%I.jpg 插入代码。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-16 21:33:29 | 显示全部楼层
我都不知道怎么写游戏
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-8-16 22:00:06 | 显示全部楼层
楼主{:2_37:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-16 22:35:42 | 显示全部楼层
不错 不错 支持一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-16 23:02:24 | 显示全部楼层
支持支持,可是抄到VC++6.0拼了老命在报错:sweat:,还没开始玩呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-12 22:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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