123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #include "raylib.h"
- typedef struct player{
- Vector2 position;
- }player;
- int main(void)
- {
- // Initialization
- //--------------------------------------------------------------------------------------
- const int screenWidth = 800;
- const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib example.");
- // Our player setup
- player myplayer = {0};
- myplayer.position = (Vector2){5,5};
- // Our tile width and height. We use the screen dimension and the map dimension to
- // get tile dimensions that fill up the entire screen.
- float tilewidth = (float)screenWidth/20.0f;
- float tileheight = (float)screenHeight/10.0f;
- // This is out collision map.
- bool colmap[10][20] = {false};
- // This is our tile map.
- int map[10][20] = { {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
- {1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1},
- {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1},
- {1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1},
- {1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1},
- {1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1},
- {1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1},
- {1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1},
- {1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1},
- {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
- // Copy the contents of the map into the collision map.
- for(int y=0;y<10;y++){
- for(int x=0;x<20;x++){
- if(map[y][x]>0)colmap[y][x]=true;
- }
- }
-
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- // Update
- //----------------------------------------------------------------------------------
-
- // Below here we read the key. If the l/r/u/d cursor is pressed then we check the new position is inside
- // the array bounds and then we check if the collision map on the new position is not set to flag true on that tile.
- if(IsKeyPressed(KEY_RIGHT)&& myplayer.position.x+1<20 && colmap[(int)myplayer.position.y][(int)myplayer.position.x+1]==false) {
- myplayer.position.x+=1;
- }
- if(IsKeyPressed(KEY_LEFT) && myplayer.position.x-1>-1 && colmap[(int)myplayer.position.y][(int)myplayer.position.x-1]==false) {
- myplayer.position.x-=1;
- }
- if(IsKeyPressed(KEY_UP)&& myplayer.position.y-1>-1 && colmap[(int)myplayer.position.y-1][(int)myplayer.position.x]==false) {
- myplayer.position.y-=1;
- }
- if(IsKeyPressed(KEY_DOWN) && myplayer.position.y+1<20 && colmap[(int)myplayer.position.y+1][(int)myplayer.position.x]==false) {
- myplayer.position.y+=1;
- }
- //----------------------------------------------------------------------------------
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
- ClearBackground(RAYWHITE);
-
- // Draw our tilemap.
- for(int y=0;y<10;y++){
- for(int x=0;x<20;x++){
- if(map[y][x]==1){
- DrawRectangle(x*tilewidth,y*tileheight,tilewidth,tileheight,BLACK);
- }
- }
- }
- // Draw our player
- DrawRectangle(myplayer.position.x*tilewidth,myplayer.position.y*tileheight,tilewidth,tileheight,RED);
-
- DrawText("Use Cursor Keys to move around..",0,0,20,WHITE);
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
- // De-Initialization
- //--------------------------------------------------------------------------------------
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
- return 0;
- }
|