同时移动乒乓球拍

moving ping-pong rackets at the same time

本文关键字:乒乓球拍 移动      更新时间:2023-10-16

好吧,我已经在c++上开始了一个图形项目,现在我需要一些帮助。这是一个有两个球拍的乒乓球游戏;一个通过向上和向下键上下移动,另一个通过S和W键移动。

我需要做点什么,让两个球员都能同时移动球拍。

对不起我英语不好!

#include <iostream>
#include "SDL/SDL.h"
#include <SDL/SDL_gfxPrimitives.h>
using namespace std;
int main()
{
    SDL_Surface* screen = SDL_SetVideoMode(1200, 800 ,32, 0);
        int i=0,j = 0;
        bool a = 0 ;
         while(true)
        {
        boxRGBA(screen, 1000, 200+j, 1050, 350+j, 0, 0, 0, 255);
        boxRGBA(screen, 100, 200+i,150,350+i,0,0,0,255);
        SDL_Event event;
                if(!SDL_PollEvent(&event));
                {
                        if(event.type == SDL_QUIT)
                                return 0;
                        if(event.type == SDL_KEYDOWN)
                       {
                                if(event.key.keysym.sym == SDLK_UP)
                                    j -=10;
                                if(event.key.keysym.sym == SDLK_DOWN)
                                    j +=10;
                                if(event.key.keysym.sym == SDLK_w)
                                    i-=10;
                                if(event.key.keysym.sym == SDLK_s)
                                    i+=10;
                        }
                        else if (event.type == SDL_KEYUP)
                        a=1;
                }
            //if(a)
                //j += b;
 boxRGBA(screen, 1000, 200+j, 1050, 350+j, 255, 50, 0, 255);
 boxRGBA(screen, 100, 200+i,150,350+i,50,0,255,255);
        SDL_Flip(screen);
        SDL_Delay(2);
    }
   SDL_Delay(5000);
    return 0;
}
if(!SDL_PollEvent(&event)); // what's ; doing here? Why are you negating the return value?

尝试将其更改为while:

while(SDL_PollEvent(&event)) { ... }

这样,它将轮询队列中的所有可用事件。

SDL_GetKeyboardState为您提供键盘当前状态的快照。

const Uint8 *state = SDL_GetKeyboardState(NULL);
if (state[SDL_SCANCODE_UP])
    j -=10;
if (state[SDL_SCANCODE_DOWN])
    j +=10;
if (state[SDL_SCANCODE_W])
    i -=10;
if (state[SDL_SCANCODE_S])
    i +=10;