mirror of
https://github.com/raysan5/raylib.git
synced 2025-12-25 10:22:33 -05:00
Destroyed Working with Raylib in WebAssembly (markdown)
@ -1,140 +0,0 @@
|
||||
#include "raylib.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#define MAX_OBJECTS 5
|
||||
#define SCREEN_WIDTH 800
|
||||
#define SCREEN_HEIGHT 500
|
||||
|
||||
//Game Object
|
||||
typedef struct GameObject {
|
||||
Rectangle rect;
|
||||
Vector2 position;
|
||||
float width;
|
||||
bool passed;
|
||||
} GameObject;
|
||||
|
||||
int main() {
|
||||
// Window Setup
|
||||
InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "Flappy Bird No Graphics or Sound");
|
||||
SetTargetFPS(60);
|
||||
|
||||
int score = 0;
|
||||
int highScore = 0;
|
||||
bool gameOver = false;
|
||||
|
||||
float birdX = 130;
|
||||
float birdY = 8;
|
||||
float birdVelocity = 0;
|
||||
const float gravity = 0.4f;
|
||||
const float jumpStrength = -5.8f;
|
||||
const float birdSize = 32;
|
||||
|
||||
// Initialize object positions
|
||||
GameObject objects[MAX_OBJECTS];
|
||||
int objectSpacing = 300;
|
||||
int startX = 800;
|
||||
float objectSpeed = 3.5f;
|
||||
|
||||
for (int i = 0; i < MAX_OBJECTS; i++) {
|
||||
objects[i].position = (Vector2){ startX + i * objectSpacing, GetRandomValue(200, SCREEN_HEIGHT - 50) };
|
||||
objects[i].rect = (Rectangle){ objects[i].position.x, objects[i].position.y, 40, 40 };
|
||||
objects[i].width = 40;
|
||||
objects[i].passed = false;
|
||||
}
|
||||
|
||||
// Colors
|
||||
Color LightBlue = {208, 226, 237, 255};
|
||||
Color Green = {50, 123, 66, 255};
|
||||
|
||||
// Game Loop
|
||||
while (!WindowShouldClose()) {
|
||||
// Game logic
|
||||
if (!gameOver) {
|
||||
if (IsKeyPressed(KEY_SPACE)) {
|
||||
birdVelocity = jumpStrength;
|
||||
}
|
||||
|
||||
birdVelocity += gravity;
|
||||
birdY += birdVelocity;
|
||||
|
||||
for (int i = 0; i < MAX_OBJECTS; i++) {
|
||||
objects[i].position.x -= objectSpeed;
|
||||
objects[i].rect.x = objects[i].position.x;
|
||||
|
||||
if (objects[i].position.x + objects[i].width < 0) {
|
||||
float farthestX = 0;
|
||||
for (int j = 0; j < MAX_OBJECTS; j++) {
|
||||
if (j != i && objects[j].position.x > farthestX) {
|
||||
farthestX = objects[j].position.x;
|
||||
}
|
||||
}
|
||||
objects[i].position.x = farthestX + objectSpacing;
|
||||
objects[i].position.y = GetRandomValue(200, SCREEN_HEIGHT - 50);
|
||||
objects[i].rect.x = objects[i].position.x;
|
||||
objects[i].rect.y = objects[i].position.y;
|
||||
objects[i].passed = false;
|
||||
}
|
||||
|
||||
if (!objects[i].passed && birdX > objects[i].position.x + objects[i].width) {
|
||||
score++;
|
||||
objects[i].passed = true;
|
||||
}
|
||||
|
||||
Rectangle birdRect = { birdX, birdY, birdSize, birdSize };
|
||||
if (CheckCollisionRecs(birdRect, objects[i].rect)) {
|
||||
gameOver = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (birdY < 0 || birdY + birdSize > SCREEN_HEIGHT - 13) {
|
||||
gameOver = true;
|
||||
}
|
||||
} else {
|
||||
if (IsKeyPressed(KEY_ENTER)) {
|
||||
// Restart
|
||||
birdY = 8;
|
||||
birdVelocity = 0;
|
||||
score = 0;
|
||||
gameOver = false;
|
||||
|
||||
for (int i = 0; i < MAX_OBJECTS; i++) {
|
||||
objects[i].position = (Vector2){ startX + i * objectSpacing, GetRandomValue(200, SCREEN_HEIGHT - 50) };
|
||||
objects[i].rect = (Rectangle){ objects[i].position.x, objects[i].position.y, 40, 40 };
|
||||
objects[i].passed = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (score > highScore) highScore = score;
|
||||
|
||||
// Drawing
|
||||
BeginDrawing();
|
||||
ClearBackground(LightBlue);
|
||||
|
||||
// Ground
|
||||
DrawRectangle(0, SCREEN_HEIGHT - 11, SCREEN_WIDTH, 16, Green);
|
||||
|
||||
// Draw Bird
|
||||
DrawRectangle(birdX, birdY, birdSize, birdSize, RED);
|
||||
|
||||
// Draw Objects
|
||||
for (int i = 0; i < MAX_OBJECTS; i++) {
|
||||
DrawRectangleRec(objects[i].rect, DARKGRAY);
|
||||
}
|
||||
|
||||
// Text
|
||||
DrawText("Flappy Bird", 10, 7, 24, BLACK);
|
||||
DrawText(TextFormat("SCORE: %d", score), 10, 40, 20, DARKBLUE);
|
||||
DrawText(TextFormat("HIGH SCORE: %d", highScore), 10, 70, 20, MAROON);
|
||||
|
||||
if (gameOver) {
|
||||
DrawText("GAME OVER!", SCREEN_WIDTH / 2 - 100, SCREEN_HEIGHT / 2 - 40, 30, RED);
|
||||
DrawText("Press [ENTER] to Restart", SCREEN_WIDTH / 2 - 120, SCREEN_HEIGHT / 2, 20, DARKGRAY);
|
||||
}
|
||||
|
||||
EndDrawing();
|
||||
}
|
||||
|
||||
CloseWindow();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user