aboutsummaryrefslogtreecommitdiff
path: root/games/drturtle/02_drturtle_player.c
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2014-07-25 10:50:51 +0200
committerRay <raysan5@gmail.com>2014-07-25 10:50:51 +0200
commit222995c32e696f04c4dd2d77141758d6591e2fe9 (patch)
tree96883f6bba5c43e946b569c76f56535499a8f8bf /games/drturtle/02_drturtle_player.c
parent56a79797505eb50386b587465707248c091400df (diff)
downloadraylib-1.1.1.tar.gz
raylib-1.1.1.zip
Upload new game: Dr. Turtle & Mr. Gamera1.1.1
Diffstat (limited to 'games/drturtle/02_drturtle_player.c')
-rw-r--r--games/drturtle/02_drturtle_player.c212
1 files changed, 212 insertions, 0 deletions
diff --git a/games/drturtle/02_drturtle_player.c b/games/drturtle/02_drturtle_player.c
new file mode 100644
index 00000000..0d8defa2
--- /dev/null
+++ b/games/drturtle/02_drturtle_player.c
@@ -0,0 +1,212 @@
+/*******************************************************************************************
+*
+* raylib game - Dr. Turtle & Mr. Gamera
+*
+* Welcome to raylib!
+*
+* To test examples, just press F6 and execute raylib_compile_execute script
+* Note that compiled executable is placed in the same folder as .c file
+*
+* You can find all basic examples on C:\raylib\raylib\examples folder or
+* raylib official webpage: www.raylib.com
+*
+* Enjoy using raylib. :)
+*
+* This game has been created using raylib 1.1 (www.raylib.com)
+* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+* Copyright (c) 2014 Ramon Santamaria (Ray San - raysan@raysanweb.com)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+#define MAX_ENEMIES 10
+
+typedef enum { TITLE, GAMEPLAY, ENDING } GameScreen;
+
+int main()
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ const int screenWidth = 1280;
+ const int screenHeight = 720;
+
+ // Init window
+ InitWindow(screenWidth, screenHeight, "Dr. Turtle & Mr. GAMERA");
+
+ // Load game resources: textures
+ Texture2D sky = LoadTexture("resources/sky.png");
+ Texture2D mountains = LoadTexture("resources/mountains.png");
+ Texture2D sea = LoadTexture("resources/sea.png");
+ Texture2D title = LoadTexture("resources/title.png");
+ Texture2D turtle = LoadTexture("resources/turtle.png");
+ Texture2D gamera = LoadTexture("resources/gamera.png");
+
+ // Define scrolling variables
+ int backScrolling = 0;
+ int seaScrolling = 0;
+
+ // Define current screen
+ GameScreen currentScreen = TITLE;
+
+ // Define player variables
+ int playerRail = 1;
+ Rectangle playerBounds = { 30 + 14, playerRail*120 + 90 + 14, 100, 100 };
+ bool gameraMode = false;
+
+ // Define additional game variables
+ int framesCounter = 0;
+
+ SetTargetFPS(60); // Setup game frames per second
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ framesCounter++;
+
+ // Game screens management
+ switch (currentScreen)
+ {
+ case TITLE:
+ {
+ // Sea scrolling
+ seaScrolling -= 2;
+ if (seaScrolling <= -screenWidth) seaScrolling = 0;
+
+ // Press enter to change to gameplay screen
+ if (IsKeyPressed(KEY_ENTER))
+ {
+ currentScreen = GAMEPLAY;
+ framesCounter = 0;
+ }
+
+ } break;
+ case GAMEPLAY:
+ {
+ // Background scrolling logic
+ backScrolling--;
+ if (backScrolling <= -screenWidth) backScrolling = 0;
+
+ // Sea scrolling logic
+ seaScrolling -= 8;
+ if (seaScrolling <= -screenWidth) seaScrolling = 0;
+
+ // Player movement logic
+ if (IsKeyPressed(KEY_DOWN)) playerRail++;
+ else if (IsKeyPressed(KEY_UP)) playerRail--;
+
+ // Check player not out of rails
+ if (playerRail > 4) playerRail = 4;
+ else if (playerRail < 0) playerRail = 0;
+
+ // Update player bounds
+ playerBounds = (Rectangle){ 30 + 14, playerRail*120 + 90 + 14, 100, 100 };
+
+ if (IsKeyPressed(KEY_SPACE)) gameraMode = !gameraMode;
+ if (IsKeyPressed(KEY_ENTER)) currentScreen = ENDING;
+
+ } break;
+ case ENDING:
+ {
+ // Press enter to play again
+ if (IsKeyPressed(KEY_ENTER))
+ {
+ currentScreen = GAMEPLAY;
+
+ // Reset player
+ playerRail = 1;
+ playerBounds = (Rectangle){ 30 + 14, playerRail*120 + 90 + 14, 100, 100 };
+
+ gameraMode = false;
+ framesCounter = 0;
+ }
+
+ } break;
+ default: break;
+ }
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(RAYWHITE);
+
+ // Draw background (common to all screens)
+ DrawTexture(sky, 0, 0, WHITE);
+
+ DrawTexture(mountains, backScrolling, 0, WHITE);
+ DrawTexture(mountains, screenWidth + backScrolling, 0, WHITE);
+
+ if (!gameraMode)
+ {
+ DrawTexture(sea, seaScrolling, 0, BLUE);
+ DrawTexture(sea, screenWidth + seaScrolling, 0, BLUE);
+ }
+ else
+ {
+ DrawTexture(sea, seaScrolling, 0, RED);
+ DrawTexture(sea, screenWidth + seaScrolling, 0, RED);
+ }
+
+ switch (currentScreen)
+ {
+ case TITLE:
+ {
+ // Draw title
+ //DrawTexture(title, screenWidth/2 - title.width/2, screenHeight/2 - title.height/2 - 80, WHITE);
+ DrawRectangle(380, 140, 500, 300, GRAY);
+
+ // Draw blinking text
+ if ((framesCounter/30) % 2) DrawText("PRESS ENTER", 480, 480, 40, BLACK);
+
+ } break;
+ case GAMEPLAY:
+ {
+ // Draw player
+ //if (!gameraMode) DrawTexture(turtle, playerBounds.x - 14, playerBounds.y - 14, WHITE);
+ //else DrawTexture(gamera, playerBounds.x - 64, playerBounds.y - 64, WHITE);
+
+ // Draw player bounding box
+ if (!gameraMode) DrawRectangleRec(playerBounds, GREEN);
+ else DrawRectangleRec(playerBounds, ORANGE);
+
+ } break;
+ case ENDING:
+ {
+ // Draw a transparent black rectangle that covers all screen
+ DrawRectangle(0, 0, screenWidth, screenHeight, Fade(BLACK, 0.4f));
+
+ DrawText("GAME OVER", 300, 200, 100, MAROON);
+
+ // Draw blinking text
+ if ((framesCounter/30) % 2) DrawText("PRESS ENTER to REPLAY", 400, 420, 30, LIGHTGRAY);
+
+ } break;
+ default: break;
+ }
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+
+ // Unload textures
+ UnloadTexture(sky);
+ UnloadTexture(mountains);
+ UnloadTexture(sea);
+ UnloadTexture(title);
+ UnloadTexture(turtle);
+ UnloadTexture(gamera);
+
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+} \ No newline at end of file