Pastebin launched a little side project called HostCabi.net, check it out ;-)Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Oct 24th, 2012  |  syntax: None  |  size: 16.17 KB  |  hits: 41  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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. }