fix stiring

This commit is contained in:
Mats van Reenen 2019-04-24 20:46:51 +02:00
parent fbc349bb59
commit 2d6717aac9

123
game.c
View File

@ -88,122 +88,6 @@ int createCar(){
return 0;
}
int mainv1(void){
if(init() != 0) return 1;
// create surface
surface = IMG_Load("img/car.png");
if(!surface){
printf("error create surface: %s\n", SDL_GetError());
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 3;
}
// create texture
texture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_FreeSurface(surface);
if(!texture){
printf("error create texture: %s\n", SDL_GetError());
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 3;
}
// car
SDL_Rect car;
SDL_QueryTexture(texture, NULL, NULL, &car.w, &car.h);
car.x = (WINDOW_WIDTH - car.w) / 2;
car.y = (WINDOW_HEIGHT- car.h) / 2;
Uint8 close_requested = 0;
int car_moving = 0;
int direction = 0;
double heading = PI;
double speed = SPEED / FPS;
while(!close_requested){
// process events
SDL_Event event;
while (SDL_PollEvent(&event)){
switch (event.type) {
case SDL_QUIT:
close_requested = 1;
break;
case SDL_KEYDOWN:
switch (event.key.keysym.scancode) {
case SDL_SCANCODE_UP:
case SDL_SCANCODE_W:
car_moving = 1;
break;
case SDL_SCANCODE_DOWN:
case SDL_SCANCODE_S:
car_moving = -1;
break;
case SDL_SCANCODE_LEFT:
case SDL_SCANCODE_A:
direction = 1;
break;
case SDL_SCANCODE_RIGHT:
case SDL_SCANCODE_D:
direction = -1;
default:
break;
}
break;
case SDL_KEYUP:
switch (event.key.keysym.scancode) {
case SDL_SCANCODE_UP:
case SDL_SCANCODE_W:
case SDL_SCANCODE_DOWN:
case SDL_SCANCODE_S:
car_moving = 0;
break;
case SDL_SCANCODE_LEFT:
case SDL_SCANCODE_A:
case SDL_SCANCODE_RIGHT:
case SDL_SCANCODE_D:
direction = 0;
default:
break;
}
default:
break;
}
}
// clear the window
SDL_RenderClear(renderer);
// update position
if(car_moving == 1){
car.x += (int) (sin(heading)*speed);
car.y += (int) (cos(heading)*speed);
}else if(car_moving == -1){
car.x -= (int) (sin(heading)*speed);
car.y -= (int) (cos(heading)*speed);
}
// drow image
SDL_RenderCopy(renderer, texture, NULL, &car);
SDL_RenderPresent(renderer);
// wait
SDL_Delay(1000 / FPS);
}
// clean up resources before exiting
SDL_DestroyTexture(texture);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
int main(void){
if(init() != 0) return 1;
if(createCar() != 0) return 2;
@ -275,15 +159,20 @@ int main(void){
SDL_RenderClear(renderer);
// update position
if(car_moving == 1){
if(direction == 1){
heading += sspeed;
}else if(direction == -1){
heading -= sspeed;
}
if(car_moving == 1){
car_pos[0] += (sin(heading)*speed);
car_pos[1] += (cos(heading)*speed);
}else if(car_moving == -1){
if(direction == 1){
heading -= sspeed;
}else if(direction == -1){
heading += sspeed;
}
car_pos[0] -= (sin(heading)*speed);
car_pos[1] -= (cos(heading)*speed);
}