fix stiring
This commit is contained in:
parent
fbc349bb59
commit
2d6717aac9
123
game.c
123
game.c
@ -88,122 +88,6 @@ int createCar(){
|
|||||||
return 0;
|
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){
|
int main(void){
|
||||||
if(init() != 0) return 1;
|
if(init() != 0) return 1;
|
||||||
if(createCar() != 0) return 2;
|
if(createCar() != 0) return 2;
|
||||||
@ -275,15 +159,20 @@ int main(void){
|
|||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer);
|
||||||
|
|
||||||
// update position
|
// update position
|
||||||
|
if(car_moving == 1){
|
||||||
if(direction == 1){
|
if(direction == 1){
|
||||||
heading += sspeed;
|
heading += sspeed;
|
||||||
}else if(direction == -1){
|
}else if(direction == -1){
|
||||||
heading -= sspeed;
|
heading -= sspeed;
|
||||||
}
|
}
|
||||||
if(car_moving == 1){
|
|
||||||
car_pos[0] += (sin(heading)*speed);
|
car_pos[0] += (sin(heading)*speed);
|
||||||
car_pos[1] += (cos(heading)*speed);
|
car_pos[1] += (cos(heading)*speed);
|
||||||
}else if(car_moving == -1){
|
}else if(car_moving == -1){
|
||||||
|
if(direction == 1){
|
||||||
|
heading -= sspeed;
|
||||||
|
}else if(direction == -1){
|
||||||
|
heading += sspeed;
|
||||||
|
}
|
||||||
car_pos[0] -= (sin(heading)*speed);
|
car_pos[0] -= (sin(heading)*speed);
|
||||||
car_pos[1] -= (cos(heading)*speed);
|
car_pos[1] -= (cos(heading)*speed);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user