Skip to content Skip to footer

如何制作c语言游戏

#include

#define SCREEN_WIDTH 800

#define SCREEN_HEIGHT 600

#define BALL_SIZE 10

#define PADDLE_WIDTH 100

#define PADDLE_HEIGHT 20

SDL_Window *window = NULL;

SDL_Renderer *renderer = NULL;

SDL_Rect ball, paddle;

int ballSpeedX = 2, ballSpeedY = -2;

void init() {

SDL_Init(SDL_INIT_VIDEO);

window = SDL_CreateWindow("Breakout Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);

renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);

ball = (SDL_Rect){SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, BALL_SIZE, BALL_SIZE};

paddle = (SDL_Rect){SCREEN_WIDTH / 2 - PADDLE_WIDTH / 2, SCREEN_HEIGHT - PADDLE_HEIGHT - 10, PADDLE_WIDTH, PADDLE_HEIGHT};

}

void handleInput() {

const Uint8 *state = SDL_GetKeyboardState(NULL);

if (state[SDL_SCANCODE_LEFT] && paddle.x > 0) {

paddle.x -= 5;

}

if (state[SDL_SCANCODE_RIGHT] && paddle.x < SCREEN_WIDTH - PADDLE_WIDTH) {

paddle.x += 5;

}

}

void update() {

ball.x += ballSpeedX;

ball.y += ballSpeedY;

if (ball.x <= 0 || ball.x >= SCREEN_WIDTH - BALL_SIZE) {

ballSpeedX = -ballSpeedX;

}

if (ball.y <= 0) {

ballSpeedY = -ballSpeedY;

}

if (ball.y >= SCREEN_HEIGHT - BALL_SIZE) {

ball = (SDL_Rect){SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, BALL_SIZE, BALL_SIZE};

ballSpeedY = -2;

}

if (SDL_HasIntersection(&ball, &paddle)) {

ballSpeedY = -ballSpeedY;

}

}

void render() {

SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);

SDL_RenderClear(renderer);

SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);

SDL_RenderFillRect(renderer, &ball);

SDL_RenderFillRect(renderer, &paddle);

SDL_RenderPresent(renderer);

}

void cleanUp() {

SDL_DestroyRenderer(renderer);

SDL_DestroyWindow(window);

SDL_Quit();

}

int main(int argc, char *argv[]) {

init();

SDL_Event e;

int quit = 0;

while (!quit) {

while (SDL_PollEvent(&e) != 0) {

if (e.type == SDL_QUIT) {

quit = 1;

}

}

handleInput();

update();

render();

SDL_Delay(16); // 控制帧率

}

cleanUp();

return 0;

}

Copyright © 2088 上届世界杯冠军_u20世界杯八强 - longxinwl.com All Rights Reserved.
友情链接