Advertisement
Guest User

Untitled

a guest
Oct 24th, 2012
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.17 KB | None | 0 0
  1. #include <SDL.h>
  2. #include <SDL_ttf.h>
  3.  
  4. SDL_Surface *screen=NULL;
  5.  
  6. SDL_Surface *text=NULL;
  7.  
  8. SDL_Surface *heroe=NULL;
  9. SDL_Surface *imagebackground=NULL;
  10.  
  11.  
  12. SDL_Event event;
  13. bool run=true;
  14.  
  15.  
  16. int srcX1=0;
  17. int srcY1=0;
  18.  
  19. int dstX1=5;
  20. int dstY1=840;
  21.  
  22.  
  23. int ScreenWidth=1000;
  24. int ScreenHeight=1000;
  25.  
  26.  
  27.  
  28. class instructions
  29. {
  30.  
  31. public:
  32.  
  33.  
  34. void apply(int srcX,int srcY,int x,int y,int w,int h,SDL_Surface *source,SDL_Surface *destination)
  35. {
  36.  
  37. SDL_Rect set;
  38. set.x=x;
  39. set.y=y;
  40. set.w=w;
  41. set.h=h;
  42.  
  43. SDL_Rect src;
  44. src.x=srcX;
  45. src.y=srcY;
  46. src.w=w;
  47. src.h=h;
  48.  
  49. SDL_BlitSurface(source,&src,destination,&set);
  50.  
  51. }
  52.  
  53.  
  54. void give(int x,int y,int w,int h,SDL_Rect &fake)
  55. {
  56. fake.x=x;
  57. fake.y=y;
  58. fake.w=w;
  59. fake.h=h;
  60. }
  61.  
  62.  
  63.  
  64.  
  65. bool CheckCollision(float Ax,float Ay,float Aw,float Ah,
  66. float Bx,float By,float Bw,float Bh)
  67.  
  68. {
  69.  
  70. if(Ay+Ah<By)
  71. return false;
  72.  
  73. else if(Ay>By+Bh)
  74. return false;
  75.  
  76. else if(Ax+Aw<Bx)
  77. return false;
  78.  
  79. else if(Ax>Bx+Bw)
  80. return false;
  81.  
  82.  
  83. return true;
  84.  
  85. }
  86.  
  87.  
  88. int showmenu(SDL_Surface *screen,TTF_Font *font)
  89. {
  90.  
  91. int x,y;
  92. const int NUMMENU=2;
  93. const char *labels[NUMMENU]={"Continue","Exit"};
  94. SDL_Surface *menus[NUMMENU];
  95.  
  96. bool selected[NUMMENU]={0,0};
  97. SDL_Color color[2]={{255,255,255},{255,0,0}};
  98.  
  99. menus[0]=TTF_RenderText_Solid(font,labels[0],color[0]);
  100. menus[1]=TTF_RenderText_Solid(font,labels[1],color[0]);
  101.  
  102. SDL_Rect pos[NUMMENU];
  103. pos[0].x=screen->clip_rect.w/2 - menus[0]->clip_rect.w/2;
  104. pos[0].y=screen->clip_rect.h/2 - menus[0]->clip_rect.h;
  105. pos[1].x=screen->clip_rect.w/2 - menus[0]->clip_rect.w/2;
  106. pos[1].y=screen->clip_rect.h/2 + menus[0]->clip_rect.h;
  107.  
  108. SDL_FillRect(screen,&screen->clip_rect,SDL_MapRGB(screen->format,0x00,0x00,0x00));
  109.  
  110. SDL_Event event;
  111. while(true)
  112. {
  113.  
  114. while(SDL_PollEvent(&event))
  115. {
  116. switch(event.type)
  117. {
  118. case SDL_QUIT:
  119. for(int i=0;i<NUMMENU;i++)
  120. {
  121. SDL_FreeSurface(menus[i]);
  122. }
  123. return 1;
  124.  
  125. case SDL_MOUSEMOTION:
  126. x=event.motion.x;
  127. y=event.motion.y;
  128. for(int i=0;i<NUMMENU;i++)
  129. {
  130. if(x>=pos[1].x && x<=pos[i].x+pos[i].w && y>=pos[i].y && y<=pos[i].y+pos[i].h)
  131. {
  132. if(!selected[i])
  133. {
  134. selected[i]=1;
  135. SDL_FreeSurface(menus[i]);
  136. menus[i]=TTF_RenderText_Solid(font,labels[i],color[1]);
  137.  
  138. }
  139. }
  140.  
  141. else
  142. {
  143. if(selected[i])
  144. {
  145. selected[i]=0;
  146. SDL_FreeSurface(menus[i]);
  147. menus[i]=TTF_RenderText_Solid(font,labels[i],color[0]);
  148. }
  149.  
  150. }
  151.  
  152. }
  153. break;
  154.  
  155. case SDL_MOUSEBUTTONDOWN:
  156. x=event.button.x;
  157. y=event.button.y;
  158.  
  159. for(int i=0;i<NUMMENU;i++)
  160. {
  161. if(x>=pos[i].x && x<=pos[i].x+pos[i].w && y>=pos[i].y && y<=pos[i].y+pos[i].h)
  162. {
  163. for(int j=0;j<NUMMENU;j++)
  164. SDL_FreeSurface(menus[j]);
  165.  
  166. return i;
  167. }
  168. }
  169. break;
  170.  
  171. case SDL_KEYDOWN:
  172. switch(event.key.keysym.sym)
  173. {
  174. case SDLK_ESCAPE:
  175. for(int i=0;i<NUMMENU;i++)
  176. SDL_FreeSurface(menus[i]);
  177.  
  178. return 0;
  179. }
  180.  
  181. }
  182.  
  183. }
  184.  
  185. for(int i=0;i<NUMMENU;i++)
  186. SDL_BlitSurface(menus[i],NULL,screen,&pos[i]);
  187.  
  188.  
  189. SDL_Flip(screen);
  190.  
  191. }
  192.  
  193. }
  194.  
  195. };
  196.  
  197.  
  198.  
  199.  
  200. int main(int argc, char** argv)
  201. {
  202.  
  203. SDL_Init(SDL_INIT_EVERYTHING);
  204. TTF_Init();
  205.  
  206. SDL_WM_SetCaption("Hepic game",NULL);
  207.  
  208. screen=SDL_SetVideoMode(1000,1000,32,SDL_SWSURFACE);
  209.  
  210.  
  211. instructions instr;
  212.  
  213. TTF_Font *font=TTF_OpenFont("256BYTES.ttf",80);
  214.  
  215. SDL_Color col{80,10,10};
  216. text=TTF_RenderText_Solid(font,"GOOD\n\n\nLUCK !!!",col);
  217.  
  218.  
  219. heroe=SDL_LoadBMP("heroe.bmp");
  220. imagebackground=SDL_LoadBMP("picturegame.bmp");
  221.  
  222. SDL_SetColorKey(heroe,SDL_SRCCOLORKEY,SDL_MapRGB(heroe->format,0xff,0xff,0xff));
  223.  
  224.  
  225. Uint32 backround=SDL_MapRGB(screen->format,0x00,0xff,0xff);
  226. Uint32 color=SDL_MapRGB(screen->format,0x00,0x00,0xff);
  227. Uint32 color1=SDL_MapRGB(screen->format,0x90,0x20,0x20);
  228.  
  229.  
  230. SDL_Rect obstacle,obstacle1,obstacle2,obstacle3,obstacle4;
  231. instr.give(150,970,200,40,obstacle);
  232. instr.give(200,910,40,60,obstacle1);
  233. instr.give(500,930,40,70,obstacle2);
  234. instr.give(540,970,200,30,obstacle3);
  235. instr.give(720,930,40,70,obstacle4);
  236.  
  237. const int speed=9;
  238. SDL_Rect camera;
  239. instr.give(0,0,1000,1000,camera);
  240.  
  241. SDL_Rect player;
  242. instr.give(10,960,40,50,player);
  243.  
  244. bool up=false;
  245. bool down=false;
  246. bool right=false;
  247. bool left=false;
  248. bool changeColor=false;
  249.  
  250.  
  251. bool up1=false;
  252. bool down1=false;
  253. bool right1=false;
  254. bool left1=false;
  255. bool changeColor1=false;
  256.  
  257. int i;
  258. i=instr.showmenu(screen,font);
  259.  
  260. if(i==1)
  261. run=false;
  262.  
  263.  
  264.  
  265. SDL_Rect heroe_rect;
  266. instr.give(dstX1,dstY1,heroe->w,heroe->h,heroe_rect);
  267.  
  268. while(run)
  269. {
  270. if(SDL_PollEvent(&event))
  271. {
  272. switch(event.type)
  273. {
  274. case SDL_QUIT:
  275. run=false;
  276. break;
  277.  
  278. case SDL_KEYDOWN:
  279. switch(event.key.keysym.sym)
  280. {
  281.  
  282. case SDLK_DOWN:
  283. changeColor=true;
  284. break;
  285.  
  286. case SDLK_UP:
  287. up=true;
  288. down=false;
  289. break;
  290.  
  291. case SDLK_RIGHT:
  292. right=true;
  293. break;
  294.  
  295. case SDLK_LEFT:
  296. left=true;
  297. break;
  298.  
  299.  
  300. case SDLK_s:
  301. changeColor1=true;
  302. break;
  303.  
  304. case SDLK_w:
  305. up1=true;
  306. down1=false;
  307. break;
  308.  
  309. case SDLK_d:
  310. right1=true;
  311. break;
  312.  
  313. case SDLK_a:
  314. left1=true;
  315. break;
  316.  
  317. case SDLK_ESCAPE:
  318. int i=instr.showmenu(screen,font);
  319. if(i==1)
  320. run=false;
  321. break;
  322.  
  323. }
  324. break;
  325.  
  326. case SDL_KEYUP:
  327. switch(event.key.keysym.sym)
  328. {
  329.  
  330. case SDLK_DOWN:
  331. changeColor=false;
  332. break;
  333.  
  334. case SDLK_UP:
  335. up=false;
  336. down=true;
  337. break;
  338.  
  339. case SDLK_RIGHT:
  340. right=false;
  341. break;
  342.  
  343. case SDLK_LEFT:
  344. left=false;
  345. break;
  346.  
  347.  
  348.  
  349. case SDLK_s:
  350. changeColor1=false;
  351. break;
  352.  
  353. case SDLK_w:
  354. up1=false;
  355. down1=true;
  356. break;
  357.  
  358. case SDLK_d:
  359. right1=false;
  360. break;
  361.  
  362. case SDLK_a:
  363. left1=false;
  364. break;
  365.  
  366.  
  367. }
  368. break;
  369.  
  370.  
  371.  
  372. }
  373.  
  374.  
  375. }
  376.  
  377.  
  378.  
  379.  
  380.  
  381. if(changeColor==true)
  382. {
  383. backround=SDL_MapRGB(screen->format,0x80,0x60,0x60);
  384. }
  385.  
  386.  
  387. if(up==true)
  388. {
  389. player.y--;
  390.  
  391. }
  392.  
  393.  
  394. if(down==true && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle.x,obstacle.y,obstacle.w,obstacle.h)==true)
  395. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle1.x,obstacle1.y,obstacle1.w,obstacle1.h)==true)
  396. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle2.x,obstacle2.y,obstacle2.w,obstacle2.h)==true)
  397. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle3.x,obstacle3.y,obstacle3.w,obstacle3.h)==true)
  398. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle4.x,obstacle4.y,obstacle4.w,obstacle4.h)==true))
  399. {
  400. player.y++;
  401.  
  402. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle.x,obstacle.y,obstacle.w,obstacle.h)==true)
  403. player.y-=1;
  404.  
  405. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle1.x,obstacle1.y,obstacle1.w,obstacle1.h)==true)
  406. player.y-=1;
  407.  
  408. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle2.x,obstacle2.y,obstacle2.w,obstacle2.h)==true)
  409. player.y-=1;
  410.  
  411. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle3.x,obstacle3.y,obstacle3.w,obstacle3.h)==true)
  412. player.y-=1;
  413.  
  414. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle4.x,obstacle4.y,obstacle4.w,obstacle4.h)==true)
  415. player.y-=1;
  416.  
  417. }
  418.  
  419.  
  420.  
  421. if(right==true && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle.x,obstacle.y,obstacle.w,obstacle.h)==true)
  422. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle1.x,obstacle1.y,obstacle1.w,obstacle1.h)==true)
  423. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle2.x,obstacle2.y,obstacle2.w,obstacle2.h)==true)
  424. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle3.x,obstacle3.y,obstacle3.w,obstacle3.h)==true)
  425. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle4.x,obstacle4.y,obstacle4.w,obstacle4.h)==true))
  426. {
  427. player.x++;
  428.  
  429.  
  430. camera.x+=speed;
  431. if(camera.x>=6600)
  432. camera.x=0;
  433.  
  434. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle.x,obstacle.y,obstacle.w,obstacle.h)==true)
  435. player.x-=1;
  436.  
  437. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle1.x,obstacle1.y,obstacle1.w,obstacle1.h)==true)
  438. player.x-=1;
  439.  
  440. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle2.x,obstacle2.y,obstacle2.w,obstacle2.h)==true)
  441. player.x-=1;
  442.  
  443. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle3.x,obstacle3.y,obstacle3.w,obstacle3.h)==true)
  444. player.x-=1;
  445.  
  446. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle4.x,obstacle4.y,obstacle4.w,obstacle4.h)==true)
  447. player.x-=1;
  448. }
  449.  
  450.  
  451.  
  452. if(left==true && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle.x,obstacle.y,obstacle.w,obstacle.h)==true)
  453. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle1.x,obstacle1.y,obstacle1.w,obstacle1.h)==true)
  454. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle2.x,obstacle2.y,obstacle2.w,obstacle2.h)==true)
  455. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle3.x,obstacle3.y,obstacle3.w,obstacle3.h)==true)
  456. && !(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle4.x,obstacle4.y,obstacle4.w,obstacle4.h)==true))
  457. {
  458. player.x--;
  459.  
  460.  
  461. camera.x-=speed;
  462. if(camera.x<=0)
  463. camera.x=6600;
  464.  
  465. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle.x,obstacle.y,obstacle.w,obstacle.h)==true)
  466. player.x+=1;
  467.  
  468. if( instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle1.x,obstacle1.y,obstacle1.w,obstacle1.h)==true)
  469. player.x+=1;
  470.  
  471. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle2.x,obstacle2.y,obstacle2.w,obstacle2.h)==true)
  472. player.x+=1;
  473.  
  474. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle3.x,obstacle3.y,obstacle3.w,obstacle3.h)==true)
  475. player.x+=1;
  476.  
  477. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle4.x,obstacle4.y,obstacle4.w,obstacle4.h)==true)
  478. player.x+=1;
  479. }
  480.  
  481. //////////////////////////////
  482. //////////////////////////////
  483. if(player.x<0)
  484. {
  485. player.x=0;
  486.  
  487. }
  488.  
  489. if(player.y<0)
  490. {
  491. player.y=0;
  492. }
  493.  
  494. //////////////////////////////
  495. //////////////////////////////
  496.  
  497. if(player.x+player.w > ScreenWidth-2)
  498. {
  499. player.x=ScreenWidth-2-player.w;
  500.  
  501. }
  502.  
  503. if(player.y+player.h > ScreenHeight-2)
  504. {
  505. player.y=ScreenHeight-2-player.h;
  506.  
  507. }
  508.  
  509.  
  510. if(player.y+player.h<900)
  511. {
  512. up=false;
  513. down=true;
  514. }
  515.  
  516. ///////////////////////////////////
  517. ///////////////////////////////////
  518. ///////////////////////////////////
  519. ///////////////////////////////////
  520. ///////////////////////////////////
  521. ///////////////////////////////////
  522. ///////////////////////////////////
  523.  
  524.  
  525.  
  526. if(changeColor1==true)
  527. {
  528. backround=SDL_MapRGB(screen->format,0x80,0x80,0x20);
  529. }
  530.  
  531.  
  532.  
  533.  
  534. if(up1==true)
  535. {
  536. dstY1--;
  537. }
  538.  
  539. if(down1==true)
  540. {
  541. dstY1++;
  542.  
  543. }
  544.  
  545. if(right1==true && !(instr.CheckCollision(heroe_rect.x,heroe_rect.y,heroe_rect.w,heroe_rect.h,obstacle.x,obstacle.y,obstacle.w,obstacle.h)==true)
  546. && !(instr.CheckCollision(heroe_rect.x,heroe_rect.y,heroe_rect.w,heroe_rect.h,obstacle1.x,obstacle1.y,obstacle1.w,obstacle1.h)==true)
  547. && !(instr.CheckCollision(heroe_rect.x,heroe_rect.y,heroe_rect.w,heroe_rect.h,obstacle2.x,obstacle2.y,obstacle2.w,obstacle2.h)==true)
  548. && !(instr.CheckCollision(heroe_rect.x,heroe_rect.y,heroe_rect.w,heroe_rect.h,obstacle3.x,obstacle3.y,obstacle3.w,obstacle3.h)==true)
  549. && !(instr.CheckCollision(heroe_rect.x,heroe_rect.y,heroe_rect.w,heroe_rect.h,obstacle4.x,obstacle4.y,obstacle4.w,obstacle4.h)==true))
  550. {
  551. dstX1++;
  552.  
  553. camera.x+=speed;
  554. if(camera.x>=6600)
  555. camera.x=0;
  556.  
  557.  
  558. if(instr.CheckCollision(heroe_rect.x,heroe_rect.y,heroe_rect.w,heroe_rect.h,obstacle.x,obstacle.y,obstacle.w,obstacle.h)==true)
  559. dstX1-=1;
  560.  
  561. if(instr.CheckCollision(heroe_rect.x,heroe_rect.y,heroe_rect.w,heroe_rect.h,obstacle1.x,obstacle1.y,obstacle1.w,obstacle1.h)==true)
  562. dstX1-=1;
  563.  
  564. if(instr.CheckCollision(heroe_rect.x,heroe_rect.y,heroe_rect.w,heroe_rect.h,obstacle2.x,obstacle2.y,obstacle2.w,obstacle2.h)==true)
  565. dstX1-=1;
  566.  
  567. if(instr.CheckCollision(heroe_rect.x,heroe_rect.y,heroe_rect.w,heroe_rect.h,obstacle3.x,obstacle3.y,obstacle3.w,obstacle3.h)==true)
  568. dstX1-=1;
  569.  
  570. if(instr.CheckCollision(player.x,player.y,player.w,player.h,obstacle4.x,obstacle4.y,obstacle4.w,obstacle4.h)==true)
  571. dstX1-=1;
  572.  
  573. }
  574.  
  575. if(left1==true)
  576. {
  577. dstX1--;
  578.  
  579. camera.x-=speed;
  580. if(camera.x<=0)
  581. camera.x=6600;
  582.  
  583.  
  584. }
  585.  
  586.  
  587. /////////////////////////
  588. /////////////////////////
  589.  
  590. if(dstX1<0)
  591. {
  592. dstX1=0;
  593.  
  594. }
  595.  
  596. if(dstY1<0)
  597. {
  598. dstY1=0;
  599. }
  600.  
  601.  
  602. /////////////////////////
  603. /////////////////////////
  604.  
  605. if(dstX1+heroe->w > ScreenWidth+80)
  606. {
  607. dstX1=ScreenWidth+80-heroe->w;
  608.  
  609. }
  610.  
  611. if(dstY1+heroe->h > ScreenHeight+100)
  612. {
  613. dstY1=ScreenHeight+100-heroe->h;
  614.  
  615. }
  616. /////////////////////////////////
  617. /////////////////////////////////
  618.  
  619. SDL_FillRect(screen,&screen->clip_rect,backround);
  620.  
  621. SDL_BlitSurface(imagebackground,&camera,screen,NULL);
  622.  
  623. SDL_FillRect(screen,&obstacle,color);
  624. SDL_FillRect(screen,&obstacle1,color);
  625. SDL_FillRect(screen,&obstacle2,color);
  626. SDL_FillRect(screen,&obstacle3,color);
  627. SDL_FillRect(screen,&obstacle4,color);
  628.  
  629. SDL_FillRect(screen,&player,color1);
  630.  
  631.  
  632.  
  633. instr.apply(srcX1, srcY1, dstX1, dstY1, heroe->w,heroe->h, heroe, screen);
  634.  
  635.  
  636. SDL_BlitSurface(text,NULL,screen,NULL);
  637.  
  638.  
  639.  
  640. SDL_Flip(screen);
  641. }
  642.  
  643. SDL_FreeSurface(text);
  644. TTF_CloseFont(font);
  645.  
  646. TTF_Quit();
  647. SDL_Quit();
  648. return 0;
  649. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement