MENU.CPP
上传用户:junwei_58
上传日期:2007-05-15
资源大小:79k
文件大小:4k
源码类别:

其他智力游戏

开发平台:

Visual C++

  1. #define MENU_CPP
  2. #include <stdlib.h>
  3. #include "game.h"
  4. #include "keyintr.h"
  5. #include "menu.h"
  6. #include "speceffe.h"
  7. #include "top10.h"
  8. char *menuitem[13]={
  9. " continue game " ,
  10. " restart level " ,
  11. "  leave level  " ,
  12. " game speed 10 " ,
  13. "   music on    " ,
  14. "   exit game   " ,
  15. "     Start     " ,
  16. "   main menu   " ,
  17. "  High Scores  " ,
  18. "   1 player    " ,
  19. "   Sound on    " ,
  20. "   edit mode   " ,
  21. "    vs cpu     " ,
  22. };
  23. /////////////////////////////////////
  24. //  class menu member functions
  25. /////////////////////////////////////
  26. menu::menu(int X,int Y,menumode M):
  27. x(X),y(Y),width(150){
  28. switch(M){
  29. case MAIN:
  30. itemlist[0]=START; //itemlist[1]=PLAYER;
  31. itemlist[1]=TOP10; //itemlist[3]=SPEED;
  32. itemlist[2]=SOUND; itemlist[3]=EXIT;
  33. itemNum=4;select=0;
  34. break;
  35. default:menu::~menu();break;
  36. }
  37. }
  38. menu::~menu(){}
  39. void menu::show()const{
  40. int i;
  41. for(i=0;i<itemNum;i++)redrawtext(i);
  42. }
  43. void menu::redrawtext(int i)const{
  44. setbkcolor(BKGROUNDCOLOR);
  45. if(i==select){
  46. setcolor(TEXTCOLOR2);
  47. textxy(x+10,y+i*17+10,menuitem[itemlist[i]]);
  48. setcolor(TEXTCOLOR);
  49. textxy(x+9,y+i*17+9,menuitem[itemlist[i]],0);
  50. }else{
  51. setcolor(TEXTCOLOR2);
  52. textxy(x+10,y+i*17+10,menuitem[itemlist[i]]);
  53. }
  54. }
  55. void menu::hide(){rectantB(x,y,width,itemNum*21,0);}//putimage(x,y,img_b,COPY_PUT);}
  56. void menu::key(){
  57. int loop=1;
  58. show();
  59. while(loop){
  60. while(keyboard.status==READY);
  61. if(keyboard.status==PRESS){
  62. keyboard.status=READY;
  63. switch(keyboard.recentPressKey){
  64. case KEY_enter:case KEY_space:
  65. switch(itemlist[select]){//KEY_enter:
  66. case EXIT:         return;// case LEAVE_LEVEL:  gameover=1;levelid=0;loop=0;break;//levelid = last main level
  67. case TOMAIN:       gameover=1;loop=0;break;//should start the menu// case RESTART_LEVEL:gameover=1;loop=0;break;// case CONTINUE:     loop=0;gameover=0;break;
  68. case TOP10:
  69. smoothout();
  70. top10();
  71. getch_Key();
  72. smoothout();
  73. show();
  74. break;// case EDIT:         editmode();break;
  75. case START:
  76.  // int i,j;
  77. hide();
  78. thegameloop();
  79. show();
  80. break;
  81. }break;
  82. case KEY_up:
  83. if(select>0){
  84. beep();
  85. //if(problem)message(problemStr[problem],1);
  86. //problem=0;
  87. select--;
  88. redrawtext(select+1);
  89. redrawtext(select);
  90. }break;
  91. case KEY_down:
  92. if(select<itemNum-1){
  93. beep();
  94. //if(problem)message(problemStr[problem],1);
  95. //problem=0;
  96. select++;
  97. redrawtext(select-1);
  98. redrawtext(select);
  99. }break;
  100. case KEY_left:
  101. switch(itemlist[select]){
  102. case MUSIC:beep();switchMusic();redrawtext(select);break;
  103. case SOUND:beep();switchSound();redrawtext(select);break;
  104. case PLAYER:beep();turnPlayer(UP);redrawtext(select);break;
  105. default:break;
  106. }break;
  107. case KEY_right:
  108. switch(itemlist[select]){
  109. case MUSIC:beep();switchMusic();redrawtext(select);break;
  110. case SOUND:beep();switchSound();redrawtext(select);break;
  111. case PLAYER:beep();turnPlayer(DOWN);redrawtext(select);break;
  112. default:break;
  113. }break;
  114. default:break;
  115. }
  116. }else keyboard.status=READY;
  117. }
  118. hide();
  119. }
  120. void switchMusic(){
  121. if(!musicON){
  122. musicON=1;
  123. menuitem[MUSIC][10]='n';
  124. menuitem[MUSIC][11]=' ';
  125. }else{
  126. musicON=0;
  127. menuitem[MUSIC][10]='f';
  128. menuitem[MUSIC][11]='f';
  129. }
  130. //message(problemStr[1]);problem=1;
  131. }
  132. void switchSound(){
  133. if(!soundON){
  134. soundON=1;
  135. menuitem[SOUND][10]='n';
  136. menuitem[SOUND][11]=' ';
  137. }else{
  138. soundON=0;
  139. menuitem[SOUND][10]='f';
  140. menuitem[SOUND][11]='f';
  141. }
  142. }
  143. void turnPlayer(int d){
  144. switch(d){
  145. case UP:
  146. switch(players){
  147. case 2:
  148. char *a=menuitem[PLAYER];
  149. menuitem[PLAYER]=menuitem[AI];
  150. menuitem[AI]=a;
  151. players=1;
  152. menuitem[PLAYER][3]='2';
  153. menuitem[PLAYER][11]='s';
  154. break;
  155. case 1:
  156. players=0;
  157. menuitem[PLAYER][3]='1';
  158. menuitem[PLAYER][11]=' ';
  159. break;
  160. case 0:
  161. players=2;
  162. a=menuitem[PLAYER];
  163. menuitem[PLAYER]=menuitem[AI];
  164. menuitem[AI]=a;
  165. }break;
  166. case DOWN:
  167. switch(players){
  168. case 0:
  169. players=1;
  170. menuitem[PLAYER][3]='2';
  171. menuitem[PLAYER][11]='s';
  172. break;
  173. case 2:
  174. char *a=menuitem[PLAYER];
  175. menuitem[PLAYER]=menuitem[AI];
  176. menuitem[AI]=a;
  177. players=0;
  178. menuitem[PLAYER][3]='1';
  179. menuitem[PLAYER][11]=' ';
  180. break;
  181. case 1:
  182. players=2;
  183. a=menuitem[PLAYER];
  184. menuitem[PLAYER]=menuitem[AI];
  185. menuitem[AI]=a;
  186. }break;
  187. }
  188. }