Advertisement
Guest User

C++'Raylib

a guest
Jun 30th, 2024
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.30 KB | None | 0 0
  1. #include<iostream>
  2. #include<raylib.h>
  3.  
  4. struct AnimData
  5. {
  6.     Rectangle rec;
  7.     Vector2 pos;
  8.     int frame;
  9.     float updateTime;
  10.     float runningTime;
  11. };
  12. const int sWidth = 100;
  13. const int sHeigth = 50;
  14.  
  15.    
  16. int main()
  17. {
  18.     InitWindow(800, 400, "My first game");
  19.     Rectangle rec[sWidth][sHeigth];
  20.     int type[sWidth][sHeigth]
  21.     {
  22.  
  23.                     { 1,1,1,1,1,1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
  24.                     {1,0,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,1},
  25.                     {1,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1},
  26.                     {1,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1},
  27.                     {1,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1},
  28.                     {1,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1},
  29.                     {1,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1},
  30.                     {1,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1},
  31.                     {1,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1},
  32.                     { 1,1,1,1,1,1,1,1,1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
  33.  
  34.     };
  35.  
  36.     for (int i = 0;i < sWidth;i++)
  37.     {
  38.         for (int j = 0;j < sHeigth;j++)
  39.         {
  40.             Rectangle floor{ i * 32, j * 32, 32, 32 };
  41.             rec[i][j] = floor;
  42.         }
  43.     }
  44.  
  45.    
  46.     int playervec = 128;
  47.    
  48.     bool UP = false, DOWN = false, LEFT=false, RIGHT=false, ISMOVINGu=false, ISMOVINGd = false,
  49.         ISMOVINGl = false ,ISMOVINGr = false
  50.         ;
  51.    
  52.     Image nebula = LoadImage("pla.png");
  53.     Texture2D tex = LoadTextureFromImage(nebula);
  54.     AnimData nebData{
  55.            {0.0, 0.0, nebula.width / 3, nebula.height / 4}, // Rectangle rec
  56.            {200, 125}, // Vector2 pos
  57.            0, // int frame
  58.            1.0f / 9.0f, // float updateTime
  59.            0 // float runningTime
  60.     };
  61.     bool isShoot = false;
  62.     Rectangle rec1{ nebData.pos.x ,nebData.pos.y,4.f,4.f };
  63.     Vector2 pos{ nebData.pos.x + 20.0f, nebData.pos.y + 20.0f };
  64.     Vector2 off{ 800 / 2.0f, 400 / 2.0f };
  65.     Camera2D camera = { 0 };
  66.     camera.target = pos;
  67.     camera.offset = off;
  68.     camera.rotation = 0.0f;
  69.     camera.zoom = 1.0f;
  70.    
  71.  
  72.     SetTargetFPS(60);
  73.     while (!WindowShouldClose())
  74.     {
  75.         const float dt = GetFrameTime();
  76.         BeginDrawing();
  77.  
  78.         if (IsKeyDown(KEY_W))
  79.         {
  80.             UP = true;
  81.             ISMOVINGu = true;
  82.            
  83.         }
  84.         if (IsKeyUp(KEY_W))
  85.             ISMOVINGu = false;
  86.  
  87.  
  88.         if (IsKeyDown(KEY_S))
  89.         {
  90.             DOWN = true;
  91.             ISMOVINGd = true;
  92.            
  93.         }
  94.         if (IsKeyUp(KEY_S))
  95.         {
  96.             ISMOVINGd = false;
  97.            
  98.            
  99.         }
  100.         if (IsKeyDown(KEY_A))
  101.         {
  102.             LEFT = true;
  103.             ISMOVINGl = true;
  104.         }
  105.         if (IsKeyUp(KEY_A))
  106.         {
  107.             ISMOVINGl = false;
  108.            
  109.         }
  110.         if (IsKeyDown(KEY_D))
  111.         {
  112.             RIGHT = true;
  113.             ISMOVINGr = true;
  114.         }
  115.         if (IsKeyUp(KEY_D))
  116.             ISMOVINGr = false;
  117.  
  118.         if (!ISMOVINGd && !ISMOVINGu && !ISMOVINGl && !ISMOVINGr)
  119.             nebData.rec.x = 32;
  120.  
  121.         if (UP)
  122.         {
  123.            
  124.             nebData.pos.y -= playervec * dt;
  125.             nebData.rec.y = 96;
  126.             Rectangle rec1{ (int)nebData.pos.x + 9, (int)nebData.pos.y + 9 };
  127.             for(int i=0;i<sWidth;i++)
  128.             {
  129.                 for(int j=0;j<sHeigth;j++)
  130.                 if (CheckCollisionRecs(rec1, rec[i][j]))
  131.                 {  
  132.  
  133.                     if (type[i][j] == 1)
  134.  
  135.                         nebData.pos.y += playervec * dt;
  136.                 }
  137.             }
  138.             UP = false;
  139.             camera.target = { nebData.pos.x + 20.0f, nebData.pos.y + 20.0f };
  140.         }
  141.        
  142.         if (DOWN)
  143.         {
  144.             nebData.pos.y += playervec * dt;
  145.             nebData.rec.y = 0;
  146.             Rectangle rec1{ (int)nebData.pos.x + 9, (int)nebData.pos.y + 9 };
  147.             for(int i=0;i<sWidth;i++)
  148.                 for (int j = 0;j < sHeigth;j++)
  149.             if (CheckCollisionRecs(rec1, rec[i][j]))
  150.             {
  151.                 if(type[i][j] == 1)
  152.                     nebData.pos.y -= playervec * dt;
  153.                
  154.            
  155.             }
  156.             DOWN = false;
  157.             camera.target = { nebData.pos.x + 20.0f, nebData.pos.y + 20.0f };
  158.         }
  159.  
  160.         if (LEFT)
  161.         {
  162.             nebData.pos.x -= playervec * dt;
  163.             nebData.rec.y = 32;
  164.             Rectangle rec1{ (int)nebData.pos.x+9, (int)nebData.pos.y+9 };
  165.            
  166.             for (int i = 0;i < sWidth;i++)
  167.                 for (int j = 0;j < sHeigth;j++)
  168.             if (CheckCollisionRecs(rec1, rec[i][j]))
  169.             {
  170.                 if (type[i][j] == 1)
  171.                 nebData.pos.x += playervec * dt;
  172.  
  173.             }
  174.             LEFT = false;
  175.             camera.target = { nebData.pos.x + 20.0f, nebData.pos.y + 20.0f };
  176.         }
  177.  
  178.         if (RIGHT)
  179.         {
  180.             nebData.pos.x += playervec * dt;
  181.             nebData.rec.y = 64;
  182.             Rectangle rec1{ (int)nebData.pos.x+24, (int)nebData.pos.y+9 };
  183.            
  184.             for (int i = 0;i < sWidth;i++) {
  185.                 for (int j = 0;j < sHeigth;j++)
  186.                
  187.                 if (CheckCollisionRecs(rec1, rec[i][j]))
  188.                 {
  189.                     if (type[i][j] == 1)
  190.                         nebData.pos.x -= playervec * dt;
  191.                    
  192.                 }
  193.             }
  194.            
  195.             RIGHT = false;
  196.             camera.target = { nebData.pos.x + 20.0f, nebData.pos.y + 20.0f };
  197.  
  198.         }
  199.  
  200.         if(IsKeyPressed(KEY_SPACE))
  201.         {
  202.             isShoot = true;
  203.            
  204.         }
  205.         if(IsKeyReleased(KEY_SPACE))
  206.         {
  207.             //isShoot = false;
  208.         }
  209.  
  210.         if(isShoot&&rec1.x<800)
  211.             rec1.x += 2.f ;
  212.         else
  213.         {
  214.             isShoot = false;
  215.         }
  216.            
  217.         nebData.runningTime += dt;
  218.         if (nebData.runningTime >= nebData.updateTime &&(ISMOVINGu||ISMOVINGd||ISMOVINGl||ISMOVINGr))
  219.         {
  220.             nebData.runningTime = 0.0;
  221.            
  222.             nebData.rec.x = nebData.frame * nebData.rec.width;
  223.             nebData.frame++;
  224.             if (nebData.frame > 4)
  225.             {
  226.                 nebData.frame = 0;
  227.             }
  228.         }
  229.        
  230.         BeginMode2D(camera);
  231.  
  232.         ClearBackground(BLACK);
  233.        
  234.         for (int i = 0;i < sWidth;i++)
  235.             for (int j = 0;j < sHeigth;j++)
  236.         {   if(type[i][j] == 1)
  237.             DrawRectangle((int)rec[i][j].x, (int)rec[i][j].y, (int)rec[i][j].width, (int)rec[i][j].height, GRAY);
  238.         else DrawRectangle((int)rec[i][j].x, (int)rec[i][j].y, (int)rec[i][j].width, (int)rec[i][j].height, DARKGREEN);
  239.  
  240.         }
  241.         DrawTextureRec(tex, nebData.rec, nebData.pos, WHITE);
  242.         if(isShoot)
  243.         DrawRectangle(rec1.x,rec1.y,4.f,4.f,BLUE);
  244.         EndDrawing();
  245.         EndMode2D();
  246.     }
  247.     CloseWindow();
  248.     //std::cout<<"Hello, World\n";
  249.  
  250.     return 0;
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement