SMB.C
上传用户:hanguang
上传日期:2007-04-01
资源大小:93k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /****************************************************************************
  2. *Super Mario Bros.     *
  3. *Copyright 1985 Nintendo     *
  4. *Coded by:     *
  5. *  William Merrill Buerger     *
  6. *  Buergerw@warp.msoe.edu     *
  7. *  http://www.msoe.edu/~buergerw     *
  8. *With help from:     *
  9. *  John Ratke -Keyboard Handler     *
  10. *  Themie Gouthas -XLIB graphics stuff     *
  11. ****************************************************************************/
  12. #include<f:smbsmb.h> //Main Header file (f:smb = path of smb.h)//
  13. #include<f:smbsmbfunc.c> //Function file//
  14. //MAIN///////////////////////////////////////////////////////////////////////
  15. void main()
  16. {
  17.   int move; //DEFINE & INITIALIZE LOCAL VARIABLES//
  18.   int up;
  19.   int down=0;
  20.   int finish=0;
  21.   int jumploop=0;
  22.   int numplayers;
  23.   int palloop;
  24.   colorpal tempc;
  25.   init();
  26.   curplay=0;
  27.   getmario();
  28.   getinputs();
  29.   numplayers=startscreen();
  30.   if (numplayers==1)
  31.     player[1].lives=0;
  32. //MAIN GAME LOOP/////////////////////////////////////////////////////////////
  33.   while(finish!=3)
  34.   {
  35.     setcolors();
  36.     times[0]=201;
  37.     levelscreen();
  38.     marioy=getinputs();
  39.     if (player[curplay].screenx>=data.startpos[0]*16)
  40.       player[curplay].screenx=data.startpos[0]*16;
  41.     else
  42.       player[curplay].screenx=0;
  43.     if (player[curplay].screenx>0)
  44.       marioy=data.startpos[1];
  45.     mariox=40;
  46.     up=0;
  47.     move=0;
  48.     down=0;
  49.     palloop=0;
  50.     tempc=data.palette[21];
  51.     data.sprite=6;
  52.     gettime(&t);
  53.     times[1]=t.ti_sec;
  54.     times[2]=times[1]-1;
  55.     fillscreen(BACKGROUND);
  56.     while(!finish) //CURRENT LEVEL AND PLAYER LOOP//
  57.     {
  58.       x_page_flip(0,0);
  59.       rotatepal(&palloop,&tempc);
  60.       fillscreen(BACKGROUND);
  61.       drawscreen(player[curplay].screenx);
  62.       drawmario(mariox,marioy);
  63.       gettime(&t);
  64.       times[1]=t.ti_sec;
  65.       if (marioy<207)
  66. check_keybuf(&move,&finish,&up,&down,&jumploop);
  67.       animate_mario(move);
  68.       move_mario(&move);
  69.       check_jump(&up,&down,&jumploop);
  70.       check_blocks();
  71.       check_finish(&finish);
  72.     }
  73. //REACT TO END OF CURRENT PLAYER LOOP////////////////////////////////////////
  74.     switch (finish)
  75.     {
  76.       case 1:
  77. player[curplay].lives--;
  78. finish=0;
  79. if (numplayers==2)
  80. {
  81.   if (curplay==0 && player[1].lives!=0)
  82.     curplay=1;
  83.   else
  84.     if (curplay==1 && player[0].lives!=0)
  85.       curplay=0;
  86. }
  87. if (player[0].lives==0 && player[1].lives==0)
  88.   finish=3;
  89. break;
  90.       case 2:
  91. player[curplay].level++;
  92. if (player[curplay].level%5==0)
  93.   player[curplay].level++;
  94. player[curplay].screenx=0;
  95. finish=0;
  96. break;
  97.       case 3:
  98. graphstring(130,100,"Game Over",TEXTCOLOR,VisiblePageOffs);
  99. // while(!keybuf[KEY_ENTER]);
  100. break;
  101.     }
  102.   }
  103. //RETURN SCREEN AND KEYBOARD TO NORMAL///////////////////////////////////////
  104.   exitgame();
  105. }
  106. //END////////////////////////////////////////////////////////////////////////