横スクロールアクションゲーム
#include <SDL2/SDL.h>
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define PLAYER_WIDTH 50
#define PLAYER_HEIGHT 50
int main(int argc, char* argv[])
{
SDL_Window* window = NULL;
SDL_Renderer* renderer = NULL;
SDL_Texture* playerTexture = NULL;
SDL_Texture* obstacleTexture = NULL;
SDL_Rect playerRect = {SCREEN_WIDTH/2 - PLAYER_WIDTH/2, SCREEN_HEIGHT/2 - PLAYER_HEIGHT/2, PLAYER_WIDTH, PLAYER_HEIGHT};
SDL_Rect obstacleRect = {SCREEN_WIDTH, SCREEN_HEIGHT - 100, 50, 50};
int obstacleSpeed = 5;
int playerSpeed = 10;
int isJumping = 0;
int jumpSpeed = 20;
int jumpHeight = 200;
int jumpCounter = 0;
SDL_Init(SDL_INIT_VIDEO);
window = SDL_CreateWindow("Simple Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
renderer = SDL_CreateRenderer(window, -1, 0);
SDL_Surface* surface = SDL_LoadBMP("player.bmp");
playerTexture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_FreeSurface(surface);
surface = SDL_LoadBMP("obstacle.bmp");
obstacleTexture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_FreeSurface(surface);
while (1)
{
SDL_Event event;
while (SDL_PollEvent(&event))
{
if (event.type == SDL_QUIT)
return 0;
else if (event.type == SDL_KEYDOWN)
{
if (event.key.keysym.sym == SDLK_SPACE && !isJumping)
{
isJumping = 1;
}
}
}
if (isJumping)
{
jumpCounter += jumpSpeed;
playerRect.y -= jumpSpeed;
if (jumpCounter >= jumpHeight)
{
isJumping = 0;
jumpCounter = 0;
}
}
else
{
playerRect.y += playerSpeed;
}
obstacleRect.x -= obstacleSpeed;
if (obstacleRect.x < -obstacleRect.w)
{
obstacleRect.x = SCREEN_WIDTH;
}
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, playerTexture, NULL, &playerRect);
SDL_RenderCopy(renderer, obstacleTexture, NULL, &obstacleRect);
SDL_RenderPresent(renderer);
SDL_Delay(10);
}
SDL_DestroyTexture(playerTexture);
SDL_DestroyTexture(obstacleTexture);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit