Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Dapper Dasher
- * Project on GameDev.TV
- * Scott Bloom
- */
- #include "raylib.h"
- struct AnimData
- {
- Rectangle rec;
- Vector2 pos;
- int frame;
- float updateTime;
- float runningTime;
- };
- bool isOnGround(AnimData data, int windowHeight)
- {
- return data.pos.y >= windowHeight - data.rec.height;
- }
- AnimData updateAnimData(AnimData data, float deltaTime, int maxFrame)
- {
- // Update runningtime
- data.runningTime += deltaTime;
- if (data.runningTime >= data.updateTime)
- {
- data.runningTime = 0.0;
- // Update animation frame
- data.rec.x = data.frame * data.rec.width;
- data.frame++;
- if (data.frame > maxFrame)
- {
- data.frame = 0;
- }
- }
- return data;
- }
- int main()
- {
- // Set Window Dimensions
- int windowDimensions[2];
- windowDimensions[0] = 1920;
- windowDimensions[1] = 1080;
- // Initialize Window
- InitWindow(windowDimensions[0], windowDimensions[1], "Dapper Dasher!");
- // Acceleration due to gravity, (pixels/frame/frame)
- const int gravity = 1'000;
- // Create Nebula
- Texture2D nebula = LoadTexture("textures/12_nebula_spritesheet.png");
- AnimData nebulaData[10];
- int nebulaSize = sizeof(nebulaData) / sizeof (nebulaData[0]);
- for (int i = 0; i < nebulaSize; i++)
- {
- nebulaData[i].rec.width = nebula.width / 8;
- nebulaData[i].rec.height = nebula.height / 8;
- nebulaData[i].rec.x = 0;
- nebulaData[i].rec.y = 0;
- nebulaData[i].pos.x = windowDimensions[0] + i * 300;
- nebulaData[i].pos.y = windowDimensions[1] - nebula.height / 8;
- nebulaData[i].frame = 0;
- nebulaData[i].runningTime = 0.0;
- nebulaData[i].updateTime = 0.0;
- }
- // Nebula velocity, px/s
- int nebVelocity = -600;
- // Create Scarfy
- Texture2D scarfy = LoadTexture("textures/scarfy.png");
- AnimData scarfyData;
- scarfyData.rec.width = scarfy.width / 6;
- scarfyData.rec.height = scarfy.height;
- scarfyData.rec.x = 0;
- scarfyData.rec.y = 0;
- scarfyData.pos.x = windowDimensions[0] / 2 - scarfyData.rec.width / 2;
- scarfyData.pos.y = windowDimensions[1] - scarfyData.rec.height;
- scarfyData.frame = 0;
- scarfyData.updateTime = 1.0 / 12.0;
- scarfyData.runningTime = 0.0;
- // Jump force and check for jump
- const int jumpForce = -600;
- const int maxJumps = 2;
- int jumpCount = 0;
- // bool isJumping = false;
- int velocity = 0;
- SetTargetFPS(60);
- while (!WindowShouldClose())
- {
- BeginDrawing();
- ClearBackground(WHITE);
- // Delta Time (time since last frame)
- const float dT = GetFrameTime();
- // Begin Game Logic
- // BEGIN NEBULA STUFF
- // Update nebRunningTime
- for (int i; i < nebulaSize; i++)
- {
- nebulaData[i] = updateAnimData(nebulaData[i], dT, 7);
- }
- // Update nebula position
- for (int i = 0; i < nebulaSize; i++)
- {
- nebulaData[i].pos.x += nebVelocity * dT;
- }
- // END NEBULA STUFF
- // BEGIN SCARFY STUFF
- // Ground check
- if (isOnGround(scarfyData, windowDimensions[1]))
- {
- // Rectangle is on ground
- velocity = 0;
- jumpCount = 0;
- }
- else
- {
- // Apply gravity
- velocity += gravity * dT;
- }
- // Check for jumping
- if (IsKeyPressed(KEY_SPACE) && jumpCount < maxJumps)
- {
- velocity = 0;
- velocity += jumpForce;
- jumpCount++;
- }
- // Update position
- scarfyData.pos.y += velocity * dT;
- // Update runningTime
- if (isOnGround(scarfyData, windowDimensions[1]))
- {
- scarfyData = updateAnimData(scarfyData, dT, 5);
- }
- // END SCARFY STUFF
- // BEGIN DRAWING
- for (int i = 0; i < nebulaSize; i++)
- {
- DrawTextureRec(nebula, nebulaData[i].rec, nebulaData[i].pos, WHITE);
- }
- // Draw Scarfy
- DrawTextureRec(scarfy, scarfyData.rec, scarfyData.pos, WHITE);
- // END DRAWING
- // End Game Logic
- EndDrawing();
- }
- UnloadTexture(nebula);
- UnloadTexture(scarfy);
- CloseWindow();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement