Guest User

Untitled

a guest
Jun 21st, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.89 KB | None | 0 0
  1. ///////////////////////////////////////////////////////////////////////
  2. // Name: Rahat Abbasi
  3. // Prism Account: rabbasi3
  4. // Collaboration: //
  5. // "I worked on the homework assignment alone, using only //
  6. // course materials." //
  7. // or //
  8. // "I received outside aid on this assigned from the following //
  9. // person(s): //
  10. ///////////////////////////////////////////////////////////////////////
  11.  
  12. #include "myLib.h"
  13. #include <stdlib.h>
  14. #include "PressEnter2.h"
  15. #include "FroggerBG.h"
  16. #include "You_Lose.h"
  17.  
  18. #define NUMCARS 8
  19. #define NUMLOGS 3
  20. #define NUMPADS 4
  21. #define NUMCOLORS 9
  22. #define FrogSize 10
  23.  
  24.  
  25. int PAD_COUNT=0;
  26. int PAD_ZERO=0;
  27. int PAD_ONE=0;
  28. int PAD_TWO=0;
  29. int PAD_THREE=0;
  30. typedef struct
  31. {
  32. int row;
  33. float col;
  34. int oldcol;
  35. float speed;
  36. int lane;
  37. int height;
  38. int width;
  39. u8 color;
  40. } CAR;
  41.  
  42. typedef struct
  43. {
  44. int row;
  45. float col;
  46. float speed;
  47. int lane;
  48. int height;
  49. int width;
  50. u8 color;
  51. } LOG;
  52.  
  53. typedef struct
  54. {
  55. int row;
  56. int col;
  57. int height;
  58. int width;
  59. } PAD;
  60.  
  61. typedef struct
  62. {
  63. int row;
  64. int col;
  65. int alive;
  66. u8 color;
  67. int height;
  68. int width;
  69. int speed;
  70. } FROG;
  71.  
  72.  
  73.  
  74. u16 colors[] = {BLACK, WHITE, RED, GREEN, BLUE, MAGENTA, CYAN, YELLOW, LTGRAY};
  75. // This enum is essentially the same as
  76. // #define BLACKINDEX 0
  77. // #define WHITEINDEX 1
  78. // etc.
  79. enum {BLACKINDEX=(255-NUMCOLORS), WHITEINDEX, REDINDEX, GREENINDEX, BLUEINDEX, MAGENTAINDEX, CYANINDEX, YELLOWINDEX,
  80. LTGRAYINDEX};
  81.  
  82. //Define all your Game States that are possible during this game
  83. typedef enum{ TITLE, PLAYING, WIN, LOSE, PAUSE} STATE;
  84. //Prototypes
  85. void LoadFroggerBGPal();
  86. void LoadNormPal();
  87. void DrawCars(CAR cars[]);
  88. void DontJump(int Button);
  89. void DrawLogs(LOG logs[]);
  90. void initCars(CAR cars[]);
  91. void initLogs(LOG logs[]);
  92. void initPads(PAD pads[]);
  93. void initFroggy(FROG froggy);
  94. void CheckFrogPadLanding(FROG frog, PAD pads[]);
  95. FROG froggy;
  96.  
  97. int main()
  98. {
  99. CAR cars[NUMCARS];
  100. LOG logs[NUMLOGS];
  101. PAD pads[NUMPADS];
  102. //FROG froggy;
  103. int j;
  104. int k;
  105. LoadFroggerBGPal();
  106.  
  107. initCars(cars);
  108. initLogs(logs);
  109.  
  110.  
  111. LoadNormPal();
  112. //Pads Dimensions
  113. initPads(pads);
  114. //initFroggy(froggy);
  115. froggy.col= 120;
  116. froggy.row= 150;
  117. froggy.color= GREENINDEX;
  118. froggy.speed= FrogSize;
  119. froggy.height= FrogSize;
  120. froggy.width= FrogSize;
  121. froggy.alive=1;
  122.  
  123.  
  124.  
  125.  
  126. int DEATH_COUNTER=0;
  127.  
  128.  
  129. STATE gamestate= TITLE;
  130. REG_DISPCTL= MODE4 | BG2_ENABLE;
  131. videoBuffer = BUFFER0;
  132. int NUMLIVES=3;
  133.  
  134. while (1)
  135. {
  136. switch(gamestate){
  137. case TITLE:
  138. //draw the title screen
  139.  
  140. copyPicture4(PressEnter2Bitmap);
  141. //FlipPage();
  142.  
  143. while (!(KEY_DOWN_NOW(BUTTON_START)));
  144. gamestate= PLAYING;
  145.  
  146. break;
  147. case PLAYING:
  148.  
  149. copyPicture4(FroggerBGBitmap);
  150.  
  151. DrawCars(cars);
  152.  
  153. if(KEY_DOWN_NOW(BUTTON_LEFT))
  154. {
  155. froggy.col -= froggy.speed;
  156. }
  157. if(KEY_DOWN_NOW(BUTTON_RIGHT))
  158. {
  159. froggy.col += froggy.speed;
  160. }
  161. if (froggy.col <0)
  162. {
  163. froggy.col=0;
  164. }
  165. if (froggy.col > 240-froggy.width)
  166. {
  167. froggy.col= 240-froggy.width;
  168. }
  169.  
  170. if(KEY_DOWN_NOW(BUTTON_UP))
  171. {
  172. froggy.row -= froggy.speed;
  173. }
  174. if(KEY_DOWN_NOW(BUTTON_DOWN))
  175. {
  176. froggy.row += froggy.speed;
  177. }
  178. if (froggy.row <=0)
  179. {
  180. froggy.row=0;
  181. }
  182. if (froggy.row > 159-froggy.height)
  183. {
  184. froggy.row= 159-froggy.height;
  185. }
  186.  
  187. for(k=0; k<NUMCARS; k++)
  188. {
  189. if ((froggy.col) >= (cars[k].col) &&
  190. (froggy.col) <= (cars[k].col +cars[k].width) &&
  191. (froggy.row) <= (cars[k].row +cars[k].height) &&
  192. (froggy.row) >= (cars[k].row))
  193. {
  194. froggy.col= 120;
  195. froggy.row= 150;
  196. DEATH_COUNTER++;
  197. }
  198. }
  199.  
  200. CheckFrogPadLanding(froggy, pads);
  201.  
  202. if (DEATH_COUNTER==3)
  203. {
  204. gamestate= LOSE;
  205. }
  206. DontJump(BUTTON_UP);
  207. DontJump(BUTTON_LEFT);
  208. DontJump(BUTTON_RIGHT);
  209. DontJump(BUTTON_DOWN);
  210.  
  211. drawRect4(froggy.row, froggy.col, froggy.height, froggy.width, GREENINDEX);
  212. DrawLogs(logs);
  213.  
  214.  
  215. waitForVblank();
  216. FlipPage();
  217.  
  218.  
  219.  
  220.  
  221. break;
  222. case WIN:
  223. break;
  224. case LOSE:
  225. copyPicture4(You_LoseBitmap);
  226. FlipPage();
  227. if (KEY_DOWN_NOW(BUTTON_START))
  228. {
  229. DEATH_COUNTER=0;
  230. //int DEATH_COUNTER=0;
  231. PAD_COUNT=0;
  232. PAD_ZERO=0;
  233. PAD_ONE=0;
  234. PAD_TWO=0;
  235. PAD_THREE=0;
  236. initCars(cars);
  237. initLogs(logs);
  238. gamestate=PLAYING;
  239. }
  240. break;
  241. case PAUSE:
  242. break;
  243. }
  244. }
  245. }
  246.  
  247.  
  248.  
  249. void DontJump(int Button)
  250. {
  251. if (KEY_DOWN_NOW(Button))
  252. {
  253. while (1)
  254. {
  255. if (!(KEY_DOWN_NOW(Button)))
  256. {
  257. break;
  258. }
  259. }
  260. }
  261. }
  262. void LoadFroggerBGPal()
  263. {
  264. for(int i=0; i<255;i++)
  265. {
  266. palette[i]= FroggerBGPal[i];
  267. }
  268. for(int i=BLACKINDEX; i<255; i++)
  269. {
  270. palette[i]= colors[i];
  271. }
  272. }
  273.  
  274. void LoadNormPal()
  275. {
  276. for (int i=0; i<NUMCOLORS;++i)
  277. {
  278. palette[i] = colors[i];
  279. }
  280. }
  281.  
  282. void DrawLogs(LOG logs[])
  283. {
  284. int k;
  285. for(k=0; k<NUMLOGS; k++)
  286. {
  287. drawRect4(logs[k].row, logs[k].col, logs[k].height, logs[k].width, GREENINDEX);
  288. }
  289. for(k=0; k<NUMLOGS; k++)
  290. {
  291. logs[k].col +=logs[k].speed;
  292. }
  293. }
  294. void DrawCars(CAR cars[])
  295. {
  296. int k;
  297. for(k=0; k<NUMCARS; k++)
  298. {
  299.  
  300. drawRect4(cars[k].row, cars[k].col, cars[k].height, cars[k].width, cars[k].color);
  301. //while (!(KEY_DOWN_NOW(BUTTON_LEFT)));
  302. //drawRect4(10, 10,15,15,GREENINDEX);
  303.  
  304. }
  305. for(k=0; k<NUMCARS; k++)
  306. {
  307. cars[k].col +=cars[k].speed;
  308. }
  309. for(k=0; k<NUMCARS; k++)
  310. {
  311. if((cars[k].col==(234-cars[k].width))&&(cars[k].speed==2))
  312. {
  313. cars[k].col=0;
  314. }
  315. if((cars[k].col==80)&&(cars[k].speed==-2))
  316. {
  317. cars[k].col=240;
  318. }
  319. }
  320. }
  321.  
  322. void initCars(CAR cars[])
  323. {
  324. int j;
  325. for(j=0; j<NUMCARS; j++)
  326. {
  327. cars[j].col= j%8*25;
  328. cars[j].row= j%4*15+95;
  329. cars[j].color= rand()%4 + 2;
  330. cars[j].speed= (j%2? -2: 2);
  331. cars[j].height= 5;
  332. cars[j].width= 10;
  333. }
  334. }
  335. void initLogs(LOG logs[])
  336. {
  337. int j;
  338. for(j=0; j<NUMLOGS; j++)
  339. {
  340. logs[j].col= j%8*25;
  341.  
  342. logs[j].color= rand()%4 + 2;
  343. logs[j].speed= (j%2? -1: 2);
  344. logs[j].height= 8;
  345. logs[j].row= j%4*logs[j].height+20;
  346. logs[j].width= 40;
  347. }
  348. }
  349. void initPads(PAD pads[])
  350. {
  351. pads[0].row=0;
  352. pads[0].col=65;
  353. pads[0].height=15;
  354. pads[0].width=20;
  355.  
  356. pads[1].row=0;
  357. pads[1].col=99;
  358. pads[1].height=15;
  359. pads[1].width=20;
  360.  
  361. pads[2].row=0;
  362. pads[2].col=132;
  363. pads[2].height=14;
  364. pads[2].width=20;
  365.  
  366. pads[3].row=0;
  367. pads[3].col=164;
  368. pads[3].height=14;
  369. pads[3].width=14;
  370. }
  371. void initFroggy(FROG froggy)
  372. {
  373. froggy.col= 120;
  374. froggy.row= 150;
  375. froggy.color= GREENINDEX;
  376. froggy.speed= FrogSize;
  377. froggy.height= FrogSize;
  378. froggy.width= FrogSize;
  379. froggy.alive=1;
  380. }
  381. void CheckFrogPadLanding(FROG froggy, PAD pads[])
  382. {
  383. if (froggy.row<=(pads[0].height) &&
  384. froggy.col>=(pads[0].col) &&
  385. froggy.col<=(pads[0].col+pads[0].width)
  386. )
  387. {
  388. froggy.col=120;
  389. froggy.row=150;
  390. PAD_COUNT++;
  391. PAD_ZERO=1;
  392. }
  393. if (froggy.row<=(pads[1].height) &&
  394. froggy.col>=(pads[1].col) &&
  395. froggy.col<=(pads[1].col+pads[1].width)
  396. )
  397. {
  398. froggy.col=120;
  399. froggy.row=150;
  400. PAD_COUNT++;
  401. PAD_ONE=1;
  402. }
  403. if (froggy.row<=(pads[2].height) &&
  404. froggy.col>=(pads[2].col) &&
  405. froggy.col<=(pads[2].col+pads[2].width)
  406. )
  407. {
  408.  
  409. froggy.col=120;
  410. froggy.row=150;
  411. PAD_COUNT++;
  412. PAD_TWO=1;
  413. }
  414. if (froggy.row<=(pads[3].height) &&
  415. froggy.col>=(pads[3].col) &&
  416. froggy.col<=(pads[3].col+pads[3].width)
  417. )
  418. {
  419. froggy.col=120;
  420. froggy.row=150;
  421. PAD_COUNT++;
  422. PAD_THREE=1;
  423. }
  424. if (PAD_ZERO)
  425. {
  426. drawRect4(0,66,froggy.height, froggy.width, froggy.color);
  427. }
  428. if (PAD_ONE)
  429. {
  430. drawRect4(0,100,froggy.height, froggy.width, froggy.color);
  431. }
  432. if (PAD_TWO)
  433. {
  434. drawRect4(0,132,froggy.height, froggy.width, froggy.color);
  435. }
  436. if (PAD_THREE)
  437. {
  438. drawRect4(0,164,froggy.height, froggy.width, froggy.color);
  439. }
  440. }
Add Comment
Please, Sign In to add comment