易码技术论坛

 找回密码
 加入易码
搜索
查看: 3735|回复: 29

[游戏] 【贪吃小精灵】V1.5版发布!【含源码】【3.10更新】

[复制链接]
发表于 2008-2-20 09:09:55 | 显示全部楼层 |阅读模式
【游戏名称】: 【贪吃小精灵】
【游戏作者】: TYCY(Too)
【开发平台】: NC2600C
【游戏版本】: V1.5
【运行平台】: Lava All
【游戏说明】:游戏上有说明

这个游戏是我在其他机器上玩过的,不知道是DVD上还是BBV的游戏
一时兴起就做了,本来想做成仿灰度的,但是由于自己美工问题(竹子在做其他),还有就是图素小,图快多,整体刷会导致速度慢很多!
所以我只能把精灵很敌人的图片弄成灰度(我自己认为的,不知道象不象)
敌人AI中等.

修正点,小的BUG
按"R" 刷新屏幕,“B” 播放录像(仅限当局)
S:存储录像
L:载入录像
S和L合用,可以达到存档效果(你先储存,在读取)

//=====================================
[copy]
下面是源码,游戏包里也有!
[/copy]
  1. //=========================================

  2. //========宏值定义========
  3. //--------GameSub--------
  4. #define Game_Start 0
  5. #define Game_Exit 1
  6. #define Game_Win 2
  7. #define Game_Lose 3
  8. #define Game_Init 4
  9. #define Game_Help 5
  10. #define Game_Pause 6
  11. //--------Map-------
  12. #define MapX 20 // 地图宽
  13. #define MapY 10 // 地图高
  14. //--------Pic-------
  15. #define BlockX 8 // 图素宽
  16. #define BlockY 8 // 图素高
  17. //--------Key--------
  18. #define Up_Key 20
  19. #define Down_Key 21
  20. #define Right_Key 22
  21. #define Left_Key 23
  22. #define Help_Key 25
  23. #define Esc_Key 27
  24. #define Pause_Key 32
  25. #define Update_Key 'r'  // 更新屏幕
  26. #define SaveVdo_Key 's' // 储存录象
  27. #define LoadVdo_Key 'l' // 载入录象
  28. #define PlayVdo_Key 'b' // 播放录象
  29. //--------Init--------
  30. #define Mx_Start BlockX*6
  31. #define My_Start BlockY*(MapY-2)
  32. #define Ex_Start_0 BlockX*(MapX-1)
  33. #define Ey_Start_0 BlockY*1
  34. #define Ex_Start_1 BlockX*0
  35. #define Ey_Start_1 BlockY*1
  36. #define Ex_Start_2 BlockX*1
  37. #define Ey_Start_2 BlockY*7
  38. //--------MapDat--------
  39. #define Blank 0
  40. #define Food 1
  41. #define Black 2
  42. #define My_0 3
  43. #define My_1 4
  44. #define Enemy_0 5
  45. #define Enemy_1 6
  46. //--------PicDat--------
  47. #define Blank_Pic 0 // 空白
  48. #define Food_Pic 1 // 食物
  49. #define Black_Pic 2 // 墙壁
  50. #define MyPic_Pic 3 // 精灵
  51. #define Enemy_Pic 5 // 敌人
  52. //--------Max-------
  53. #define PicNumMax 7 // 图素个数
  54. #define FoodNumMax 88 // 食物个数
  55. #define EnemyNumMax 3 // 敌人最大个数
  56. #define MapDatSize MapX*MapY
  57. #define VdoSize 300
  58. //--------OffSet--------
  59. #define PicDat_OffSet 0
  60. #define MapDat_OffSet 56
  61. //--------Time--------
  62. #define Delay_Time 32
  63. //--------Call--------
  64. #define Enemy 0
  65. #define My    1
  66. //--------Ai--------
  67. #define Ai 3 // 敌人AI(值越高越聪明)
  68. //========变量定义========
  69. struct Dat
  70. {
  71. char n;
  72. int x;
  73. int y;
  74. };
  75. struct Dat M;
  76. struct Dat E[EnemyNumMax];
  77. char EnemyNum;
  78. char FoodNum;
  79. char EatFoodNum;
  80. char Dir[3];
  81. char Str[26*6];
  82. char IfChange; // 用于AI中判断是否改变方向
  83. char PicDat[PicNumMax][BlockX*BlockY/8];
  84. char MapDat[MapY][MapX];
  85. char SaveMapDat[MapY][MapX];
  86. char VdoDat[VdoSize];
  87. int VdoNum;
  88. int Move_X[4]={0,0,1,-1};
  89. int Move_Y[4]={-1,1,0,0};
  90. //========函数定义========
  91. char GetKey()
  92. {
  93. char key;
  94. key=0;
  95. while(!key)
  96. {
  97.   key=CheckKey(128);
  98. }
  99. return (key);
  100. }
  101. void ShowPic(char ix,char iy,char id,char in)
  102. {
  103. if(id>PicNumMax)
  104. {
  105.   id=Blank_Pic;
  106. }
  107. WriteBlock(ix,iy,BlockX,BlockY,1,PicDat[id+in]);
  108. }
  109. void ShowMyPic(int ix,int iy)
  110. {
  111. ShowPic(ix,iy,MyPic_Pic,M.n++);
  112. if(M.n==2)
  113. {
  114.   M.n=0;
  115. }
  116. }
  117. void ShowEnemy(int ix,int iy,char in)
  118. {
  119. ShowPic(ix,iy,Enemy_Pic,E[in].n++);
  120. if(E[in].n==2)
  121. {
  122.   E[in].n=0;
  123. }
  124. }
  125. void ShowMap()
  126. {
  127. char i,j;
  128. for(j=0;j<MapY;j++)
  129. {
  130.   for(i=0;i<MapX;i++)
  131.   {
  132.    ShowPic(i*BlockX,j*BlockY,MapDat[j][i],0);
  133.   }
  134. }
  135. }
  136. char ShowTxt(char ix,char iy,int is,char itype,char imode)
  137. {
  138. char Len;
  139. Len=strlen(is)*6;
  140. if(!itype | !Len | ix>160 | iy>80)
  141. {
  142.   return (0);
  143. }
  144. if(!ix & !iy)
  145. {
  146.   Block(80-(Len>>1)-2,31,(Len>>1)+82,48,itype-1);
  147.   Rectangle(80-(Len>>1)-1,32,(Len>>1)+81,47,itype);
  148.   TextOut(80-(Len>>1),34,is,itype);
  149. }
  150. else
  151. {
  152.   Block(ix-2,iy-3,ix+Len+2,iy+14,itype-1);
  153.   Rectangle(ix-1,iy-2,ix+Len+1,iy+13,itype);
  154.   TextOut(ix,iy,is,itype);
  155. }
  156. if(itype<64)
  157. {
  158.   Refresh();
  159. }
  160. if(imode)
  161. {
  162.   return (getchar());
  163. }
  164. }
  165. void ChooseFile(char &str[])
  166. {
  167. char i;
  168. char fname[20];
  169. char nowd[60];
  170. if(!ChDir("/ClearVdo"))
  171. {
  172.   return;
  173. }
  174. strcpy(nowd,"/ClearVdo");
  175. while(1)
  176. {
  177.   if(!FileList(fname)||!strcmp(fname,".."))
  178.   {
  179.    if(!strcmp(nowd,"/"))
  180.    {
  181.     break;
  182.    }
  183.    for(i=strlen(nowd);i>0&nowd[i]!='/';i--);
  184.    if(i)nowd[i]=0;
  185.    else strcpy(nowd,"/");
  186.    ChDir(nowd);
  187.    continue;
  188.   }
  189.   if(!strcmp(nowd,"/"))strcpy(nowd,"");
  190.   sprintf(nowd,"%s/%s",nowd,fname);
  191.   if(ChDir(fname))continue;
  192.   break;
  193. }
  194. memcpy(str,nowd,strlen(nowd));
  195. }
  196. void LoadDat()
  197. {
  198. char datfp;
  199. ClearScreen();
  200. ShowTxt(0,0,"Loading..",1,0);
  201. if((datfp=fopen("/LavaData/Clear.dat","r"))==0)
  202. {
  203.   ClearScreen();
  204.   ShowTxt(0,0,"资源文件丢失!",1,1);
  205.   exit(0);
  206. }
  207. fseek(datfp,PicDat_OffSet,0);
  208. fread(PicDat,1,PicNumMax*BlockX*BlockY>>3,datfp);
  209. fseek(datfp,MapDat_OffSet,0);
  210. fread(SaveMapDat,1,MapDatSize,datfp);
  211. fclose(datfp);
  212. }
  213. long GameSub(char n)
  214. {
  215. if(n==Game_Start)
  216. {
  217.   ClearScreen();
  218.   ShowTxt(0,0,"Loading..",1,0);
  219.   Inkey();
  220.   memset(MapDat,0,MapDatSize);
  221.   memset(VdoDat,0,VdoSize);
  222.   memcpy(MapDat,SaveMapDat,MapDatSize);
  223.   ShowMap();
  224.   Refresh();
  225.   VdoNum=0;
  226.   Dir[0]=2;
  227.   //Dir[1]=3;
  228.   //Dir[2]=3;
  229.   FoodNum=FoodNumMax;
  230.   EatFoodNum=IfChange=M.n=E[0].n=0;
  231.   EnemyNum=1;
  232.   M.x=Mx_Start;
  233.   M.y=My_Start;
  234.   E[0].x=Ex_Start_0;
  235.   E[0].y=Ey_Start_0;
  236.   IfChange=0;
  237.   /*E[1].x=Ex_Start_1;
  238.   E[1].y=Ey_Start_1;
  239.   E[1].n=0;
  240.   E[2].x=Ex_Start_2;
  241.   E[2].y=Ey_Start_2;
  242.   E[2].n=0;*/
  243. }
  244. else if(n==Game_Exit)
  245. {
  246.   ClearScreen();
  247.   if((ShowTxt(0,0,"是否退出?(y/n)",1,1))!='y')
  248.   {
  249.    ShowMap();
  250.    Refresh();
  251.    return (1);
  252.   }
  253.   ClearScreen();
  254.   ShowTxt(5,5,"程序 : TYCY (Too)",1,0);
  255.   ShowTxt(5,23,"美工 : TYCY (Too)",1,0);
  256.   ShowTxt(8,41,"CopyRight <逆天>",1,0);
  257.   ShowTxt(11,59,"谢谢使用,再见!",1,1);
  258.   exit(0);
  259. }
  260. else if(n==Game_Win)
  261. {
  262.   if((ShowTxt(0,0,"被我吃完了,吃的好饱!",73,1))==Esc_Key)exit(0);
  263.   GameSub(Game_Start);
  264. }
  265. else if(n==Game_Lose)
  266. {
  267.   if((ShowTxt(0,0,"贪吃鬼,终于抓到你了!",73,1))==Esc_Key)exit(0);
  268.   GameSub(Game_Start);
  269. }
  270. else if(n==Game_Init)
  271. {
  272.   LoadDat();
  273.   GameSub(Game_Start);
  274. }
  275. else if(n==Game_Help)
  276. {
  277.   ClearScreen();
  278.   Rectangle(1,0,160,80,1);
  279.   ShowTxt(1, 1,"你是一个贪吃的精灵,想要吃",1,0);
  280.   ShowTxt(1,14,"完所有的食物。但是要注意哦",1,0);
  281.   ShowTxt(1,27,",村长可是注意你好久了,别",1,0);
  282.   ShowTxt(1,40,"被抓住哦。不然后果很严重!",1,0);
  283.   ShowTxt(1,53,"方向键行走,空格键暂停,求",1,0);
  284.   ShowTxt(1,66,"助键帮助,跳出键退出。V8.8",1,1);
  285.   ShowMap();
  286.   Refresh();
  287. }
  288. else if(n==Game_Pause)
  289. {
  290.   ShowTxt(67,13,"暂停",73,0);
  291.   sprintf(Str,"偷吃了%d个食物",EatFoodNum);
  292.   ShowTxt(80-(strlen(Str)*6>>1),31,Str,65,0);
  293.   sprintf(Str,"还剩%d个",FoodNum);
  294.   ShowTxt(80-(strlen(Str)*6>>1),49,Str,65,1);
  295.   Refresh();
  296. }
  297. }
  298. char CheckMap(int ix,int iy,char is)
  299. {
  300. char id;
  301. if(ix<0)
  302. {
  303.   ix=(MapX-1)<<3;
  304. }
  305. if(ix>((MapX-1)<<3))
  306. {
  307.   ix=0;
  308. }
  309. if(iy<0)
  310. {
  311.   iy=(MapY-1)<<3;
  312. }
  313. if(iy>((MapY-1)<<3))
  314. {
  315.   iy=0;
  316. }
  317. id=MapDat[iy>>3][ix>>3];
  318. if(id==Blank)
  319. {
  320.   return (1);
  321. }
  322. else if(id==Food)
  323. {
  324.   if(is==Enemy)
  325.   {
  326.    return (2);
  327.   }
  328.   FoodNum--;
  329.   EatFoodNum++;
  330.   if(!FoodNum)
  331.   {
  332.    Inkey();
  333.    GameSub(Game_Win);
  334.   }
  335.   MapDat[iy>>3][ix>>3]=Blank;
  336.   ShowPic(ix,iy,Blank,0);
  337.   Refresh();
  338.   return (1);
  339. }
  340. else if(id==Black)
  341. {
  342.   return (0);
  343. }
  344. }
  345. int CheckEnemy(char id)
  346. {
  347. int ix,iy;
  348. char ic;
  349. if(!(rand()%Ai))
  350. {
  351.   return (0);
  352. }
  353. if(IfChange)
  354. {
  355.   IfChange--;
  356.   return (0);
  357. }
  358. ix=E[id].x;
  359. iy=E[id].y;
  360. ic=0;
  361. if(id>=EnemyNum)
  362. {
  363.   id=EnemyNum-1;
  364. }
  365. if(ix==M.x & iy==M.y)
  366. {
  367.   return (0);
  368. }
  369. if(ix<M.x)
  370. {
  371.   if((ic=CheckMap(ix+8,iy,Enemy)))
  372.   {
  373.    Dir[id]=2;
  374.   }
  375.   else if(iy<M.y)
  376.   {
  377.    if((ic=CheckMap(ix,iy+8,Enemy)))
  378.    {
  379.     Dir[id]=1;
  380.     IfChange=(M.y-iy)>>3;
  381.    }
  382.   }
  383.   else if(iy>M.y)
  384.   {
  385.    if((ic=CheckMap(ix,iy-8,Enemy)))
  386.    {
  387.     Dir[id]=0;
  388.     IfChange=(iy-M.y)>>3;
  389.    }
  390.   }
  391. }
  392. else if(ix>M.x)
  393. {
  394.   if((ic=CheckMap(ix-8,iy,Enemy)))
  395.   {
  396.    Dir[id]=3;
  397.   }
  398.   else if(iy<M.y)
  399.   {
  400.    if((ic=CheckMap(ix,iy+8,Enemy)))
  401.    {
  402.     Dir[id]=1;
  403.     IfChange=(M.y-iy)>>3;
  404.    }
  405.   }
  406.   else if(iy>M.y)
  407.   {
  408.    if((ic=CheckMap(ix,iy-8,Enemy)))
  409.    {
  410.     Dir[id]=0;
  411.     IfChange=(iy-M.y)>>3;
  412.    }
  413.   }
  414. }
  415. else if(iy<M.y)
  416. {
  417.   if((ic=CheckMap(ix,iy+8,Enemy)))
  418.   {
  419.    Dir[id]=1;
  420.   }
  421.   else if(ix<M.x)
  422.   {
  423.    if((ic=CheckMap(ix+8,iy,Enemy)))
  424.    {
  425.     Dir[id]=2;
  426.     IfChange=(M.x-ix)>>3;
  427.    }
  428.   }
  429.   else if(ix>M.x)
  430.   {
  431.    if((ic=CheckMap(ix-8,iy,Enemy)))
  432.    {
  433.     Dir[id]=3;
  434.     IfChange=(ix-M.x)>>3;
  435.    }
  436.   }
  437. }
  438. else if(iy>M.y)
  439. {
  440.   if((ic=CheckMap(ix,iy-8,Enemy)))
  441.   {
  442.    Dir[id]=0;
  443.   }
  444.   else if(ix<M.x)
  445.   {
  446.    if((ic=CheckMap(ix+8,iy,Enemy)))
  447.    {
  448.     Dir[id]=2;
  449.     IfChange=(M.x-ix)>>3;
  450.    }
  451.   }
  452.   else if(ix>M.x)
  453.   {
  454.    if((ic=CheckMap(ix-8,iy,Enemy)))
  455.    {
  456.     Dir[id]=3;
  457.     IfChange=(ix-M.x)>>3;
  458.    }
  459.   }
  460. }
  461. if(IfChange>10)
  462. {
  463.   IfChange=0;
  464. }
  465. return (ic);
  466. }
  467. void RecordVdo(char key)
  468. {
  469. VdoDat[VdoNum++]=key;
  470. /*if(VdoNum>=VdoSize)
  471. {
  472.   memmove(VdoDat,VdoDat+1,VdoSize-1);
  473.   VdoNum--;
  474. }*/
  475. }
  476. void Move(char key,char ifvdo)
  477. {
  478. char i;
  479. char m;
  480. char ic;
  481. char ifout;
  482. char ifmyrun;
  483. char ifenemyrun;
  484. char ifkeyout;
  485. char Last_Time;
  486. int mx,my;
  487. int ex,ey;

  488. if(!ifvdo)
  489. {
  490.   RecordVdo(key);
  491. }

  492. ifout=m=ifmyrun=ifenemyrun=ifkeyout=0;
  493. Last_Time=Getms();
  494. if(key<Up_Key | key>Left_Key)
  495. {
  496.   ShowMyPic(M.x,M.y);
  497.   ShowEnemy(E[0].x,E[0].y,0);
  498.   Refresh();
  499.   ifkeyout=1;
  500. }
  501. m=key-Up_Key;
  502. if(CheckMap((mx=M.x+(Move_X[m]<<3)),(my=M.y+(Move_Y[m]<<3)),My)&(!ifkeyout))
  503. {
  504.   ifmyrun=1;
  505.   if(mx<0)
  506.   {
  507.    mx=(MapX-1)<<3;
  508.    ifout=1;
  509.   }
  510.   if(mx>((MapX-1)<<3))
  511.   {
  512.    mx=0;
  513.    ifout=1;
  514.   }
  515.   if(my<0)
  516.   {
  517.    my=(MapY-1)<<3;
  518.    ifout=1;
  519.   }
  520.   if(my>((MapY-1)<<3))
  521.   {
  522.    my=0;
  523.    ifout=1;
  524.   }
  525.   if(ifout)
  526.   {
  527.    ShowPic(M.x,M.y,Blank,0);
  528.    ShowMyPic(mx,my);
  529.    Refresh();
  530.    M.x=mx;
  531.    M.y=my;
  532.    ifmyrun=0;
  533.   }
  534.   mx=M.x;
  535.   my=M.y;
  536. }
  537. if((ic=CheckEnemy(0)))
  538. {
  539.   ifenemyrun=1;
  540. }
  541. ex=E[0].x+(Move_X[Dir[0]]<<3);
  542. ey=E[0].y+(Move_Y[Dir[0]]<<3);
  543. if(!ic)
  544. {
  545.   ic=CheckMap(ex,ey,Enemy);
  546.   if(!ic)
  547.   {
  548.    ifenemyrun=0;
  549.   }
  550.   else
  551.   {
  552.    ifenemyrun=1;
  553.   }
  554. }
  555. if(ex<0 | ey<0 | ex>((MapX-1)<<3) | ey>((MapY-1)<<3))
  556. {
  557.   ifenemyrun=0;
  558. }
  559. ex=E[0].x;
  560. ey=E[0].y;
  561. i=0;
  562. while(i<4)
  563. {
  564.   if(ifmyrun)
  565.   {
  566.    mx=mx+(Move_X[m]<<1);
  567.    my=my+(Move_Y[m]<<1);
  568.    ShowPic(M.x,M.y,Blank,0);
  569.    ShowMyPic(mx,my);
  570.   }
  571.   if(ifenemyrun)
  572.   {
  573.    ex=ex+(Move_X[Dir[0]]<<1);
  574.    ey=ey+(Move_Y[Dir[0]]<<1);
  575.    ShowPic(E[0].x,E[0].y,Blank,0);
  576.    ShowEnemy(ex,ey,0);
  577.   }
  578.   i++;
  579.   Refresh();
  580.   while(((Getms()-Last_Time)&0xff)<Delay_Time);
  581. }
  582. if(ifmyrun)
  583. {
  584.   M.x=M.x+(Move_X[m]<<3);
  585.   M.y=M.y+(Move_Y[m]<<3);
  586.   ShowMyPic(M.x,M.y);
  587. }
  588. if(ifenemyrun)
  589. {
  590.   if(ic==2)
  591.   {
  592.    ShowPic(E[0].x,E[0].y,Food_Pic,0);
  593.   }
  594.   E[0].x=E[0].x+(Move_X[Dir[0]]<<3);
  595.   E[0].y=E[0].y+(Move_Y[Dir[0]]<<3);
  596.   ShowEnemy(E[0].x,E[0].y,0);
  597. }
  598. Refresh();
  599. }
  600. void PlayVdo()
  601. {
  602. int i;
  603. char mapdat[MapY][MapX];
  604. char mx,my,ex,ey;
  605. char eatfoodnum,foodnum;
  606. char ifchange;
  607. i = 0;
  608. mx=M.x;
  609. my=M.y;
  610. ex=E[0].x;
  611. ey=E[0].y;
  612. ifchange=IfChange;
  613. eatfoodnum=EatFoodNum;
  614. foodnum=FoodNum;
  615. M.x=Mx_Start;
  616. M.y=My_Start;
  617. E[0].x=Ex_Start_0;
  618. E[0].y=Ey_Start_0;
  619. IfChange=0;
  620. EatFoodNum=0;
  621. FoodNum=FoodNumMax;
  622. memcpy(mapdat,MapDat,MapDatSize);
  623. memcpy(MapDat,SaveMapDat,MapDatSize);
  624. ClearScreen();
  625. ShowTxt(0,0,"播放开始~",2,0);
  626. ShowMap();
  627. ShowMyPic(M.x,M.y);
  628. ShowEnemy(E[0].x,E[0].y,0);
  629. Refresh();
  630. while(i < VdoNum)
  631. {
  632.   Move(VdoDat[i++],1);
  633. }
  634. ClearScreen();
  635. ShowTxt(0,0,"播放结束~",2,0);
  636. M.x=mx;
  637. M.y=my;
  638. E[0].x=ex;
  639. E[0].y=ey;
  640. IfChange=ifchange;
  641. EatFoodNum=eatfoodnum;
  642. FoodNum=foodnum;
  643. memcpy(MapDat,mapdat,MapDatSize);
  644. ShowMap();
  645. ShowMyPic(M.x,M.y);
  646. ShowEnemy(E[0].x,E[0].y,0);
  647. Refresh();
  648. }
  649. void SaveVdo()
  650. {
  651. char datfp;
  652. char i;
  653. char str[32];
  654. i=0;
  655. if(!ChDir("/ClearVdo"))
  656. {
  657.   MakeDir("/ClearVdo");
  658.   if(!ChDir("/ClearVdo"))
  659.   {
  660.    return;
  661.   }
  662. }
  663. for(i=0;i<=20;i++)
  664. {
  665.   sprintf(str,"/ClearVdo/Vdo[%d].vdo",i+1);
  666.   datfp=fopen(str,"r");
  667.   if(!datfp)
  668.   {
  669.    fclose(datfp);
  670.    break;
  671.   }
  672.   if(i==20)
  673.   {
  674.    ShowTxt(0,0,"储出失败!",66,1);
  675.    Refresh();
  676.    return;
  677.   }
  678. }
  679. datfp=fopen(str,"w");
  680. fwrite("Vdo.",1,4,datfp);
  681. fwrite(&VdoNum,1,2,datfp);
  682. fwrite(VdoDat,1,VdoSize,datfp);
  683. fclose(datfp);
  684. ShowTxt(0,0,"保存成功!",66,1);
  685. Refresh();
  686. }
  687. void LoadVdo()
  688. {
  689. char str[64];
  690. char sign[4];
  691. char datfp;
  692. ChooseFile(str);
  693. datfp=fopen(str,"r");
  694. if(!datfp)
  695. {
  696.   ShowTxt(0,0,"录象文件打开错误!",66,1);
  697.   Refresh();
  698.   return;
  699. }
  700. rewind(datfp);
  701. fread(sign,1,4,datfp);
  702. if(strcmp(sign,"Vdo."))
  703. {
  704.   ShowTxt(0,0,"不是有效的Vdo文件!",66,1);
  705.   fclose(datfp);
  706.   Refresh();
  707.   return;
  708. }
  709. fseek(datfp,4,0);
  710. fread(&VdoNum,1,2,datfp);
  711. fread(VdoDat,1,VdoSize,datfp);
  712. fclose(datfp);
  713. ShowTxt(0,0,"读取成功!",66,1);
  714. Refresh();
  715. }
  716. void Main()
  717. {
  718. char key;
  719. GameSub(Game_Init);
  720. for(;;)
  721. {
  722.   key=CheckKey(128);
  723.   if(key==Esc_Key)
  724.   {
  725.    Inkey();
  726.    GameSub(Game_Exit);
  727.   }
  728.   else if(key==Help_Key)
  729.   {
  730.    Inkey();
  731.    GameSub(Game_Help);
  732.   }
  733.   else if(key==Pause_Key)
  734.   {
  735.    Inkey();
  736.    GameSub(Game_Pause);
  737.   }
  738.   else if(key==Update_Key)
  739.   {
  740.    ShowMap();
  741.    Refresh();
  742.   }
  743.   else if(key==PlayVdo_Key)
  744.   {
  745.    PlayVdo();
  746.    continue;
  747.   }
  748.   else if(key==SaveVdo_Key)
  749.   {
  750.    SaveVdo();
  751.    continue;
  752.   }
  753.   else if(key==LoadVdo_Key)
  754.   {
  755.    LoadVdo();
  756.    continue;
  757.   }
  758.   if(E[0].x==M.x & E[0].y==M.y)
  759.   {
  760.    Inkey();
  761.    GameSub(Game_Lose);
  762.   }
  763.   Move(key,0);
  764. }
  765. }
  766. void main()
  767. {
  768. Main();
  769. }
复制代码

[ 本帖最后由 TYCY 于 2008-4-30 09:44 编辑 ]
noname11.GIF
noname12.GIF
noname13.GIF
noname14.GIF

贪吃小精灵.rar

12.33 KB, 下载次数: 647

评分

参与人数 1小红花 +5 收起 理由
king + 5 好好好

查看全部评分

发表于 2008-2-20 09:14:50 | 显示全部楼层
沙发啊。我坐了。激动
 楼主| 发表于 2008-2-20 09:34:03 | 显示全部楼层
板凳,自己做咯!
发表于 2008-2-20 10:01:50 | 显示全部楼层
地板~
第一次这么前面XD
发表于 2008-2-20 10:18:28 | 显示全部楼层
挖个地洞就顶!
发表于 2008-2-20 10:29:03 | 显示全部楼层
无论如何都要顶啊。。。。。。。。。。
 楼主| 发表于 2008-2-20 10:37:45 | 显示全部楼层
帮忙测试下,看看有什么不足的,或是BUG!
发表于 2008-2-20 10:50:49 | 显示全部楼层
我在TC800上玩速度飞快,一下就被抓到啦,加入速度控制吧。
 楼主| 发表于 2008-2-20 11:14:47 | 显示全部楼层
TC800的实机上那么快?
我在NC2600C上是适当的速度啊
好的,我马上出其他版本的
发表于 2008-2-20 13:00:51 | 显示全部楼层
支持啊!!!

发表于 2008-2-20 17:12:11 | 显示全部楼层
支持!!

下来试试!!
发表于 2008-2-20 17:44:53 | 显示全部楼层
定一个
发表于 2008-2-20 18:13:22 | 显示全部楼层
原帖由 滴鱼 于 2008-2-20 17:44 发表
定一个

定一个!!
发表于 2008-2-21 13:33:53 | 显示全部楼层
我晕!!

速度也太快了吧!!

在V5100上都能玩!!

 楼主| 发表于 2008-2-21 13:35:12 | 显示全部楼层
速度是很快,慢速度的还没发布!
发表于 2008-2-21 17:19:06 | 显示全部楼层
针对TC800等快速度机型,加入延时设定。
发表于 2008-2-21 18:04:00 | 显示全部楼层
迟到的飘过~~顶过~~
发表于 2008-2-21 18:11:48 | 显示全部楼层
原帖由 black 于 2008-2-21 18:04 发表
迟到的飘过~~顶过~~

再支持,
ps:black没上QQ?
发表于 2008-2-21 18:15:40 | 显示全部楼层
正在上……
发表于 2008-2-21 21:03:49 | 显示全部楼层
tc1000s的速度也太快了!
那个村长走得太快了吧?……
那个精灵走得没村长快,怎么在他面前跑呢?一下就被抓到了……
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-25 07:05 , Processed in 0.017903 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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