/** Método : Controlador (Construtor) Objetivo: Inicia os valores dos anjos e demônios **/ Controlador::Controlador(long limite) { // Posição X inicial é fixa x = INICIO; // Adquirindo a posição Y y = (rand() % 18) +3; if (y <= 12){ // Forçando a ter mais demônios do que anjos y = (rand() % 18) + 3; if (y == 12) // No lugar da linha do meio (onde fica o indicador de placar) invoca na ultima linha y = 21; } if (y < 12){ // Anjos são um pouco mais lentos e brancos cor = FOREGROUND_WHITE; passo = rand() % PASSO + 2; } else{ // Demônios são um pouco mais rápidos e vermelhos cor = FOREGROUND_RED; passo = rand() % PASSO + 3; } // O limite da tela onde os anjos e demonios devem colidir com as naves ou desaparecer (Sempre 0) this->limite = limite; desenhar(); }
void animate(int val){ if(!paused){ desenhar(val); val -= 3; } teclado(); glutTimerFunc(animationTime,animate,val); }
/** Método : mover Objetivo: Move (ou não) o anjo/demonio na tela **/ bool Controlador::mover() { if (x-passo < limite) return false; apagar(); x -= passo; desenhar(); return true; }
int main(int argc, char* argv[]) { if(init()== false) clean_up(); load_files(); ClientTcp sock; sock.init(); GameState gState = GameState(); //variáveis para controle do tempo float deltaTime = 0.0; float thisTime = 0; float lastTime = 0; //chars para mostrar os pontos na tela char *msg ="Pontos: "; char *ponto=""; //char para enviar mensagem pro servidor char buffer[512]; char* ip=new CHAR(); char* porta=new CHAR(); bool quit = false; char bufferrecv[512]; while (quit == false) { thisTime = SDL_GetTicks(); deltaTime = (float)(thisTime - lastTime) / 1000; lastTime = thisTime; //controle para sair do jogo while( SDL_PollEvent( &event ) ) { if( event.type == SDL_QUIT ) { quit = true; } if( event.type == SDL_KEYDOWN ) { switch( event.key.keysym.sym ) { case SDLK_ESCAPE: quit=true; break; } } } //loop principal switch (estadoAtual) { //menu do jogo case menu: message = TTF_RenderText_Solid( font, "Conecte pela linha de comando", textColor ); desenhar(w/2-message->w/2,h/2-message->h/2,message,screen); SDL_Flip(screen); //recebe variáveis para conexão // Descomentar para ser possível digitar o ip e a porta /*printf("Digite o ip: \n"); std::cin>> ip; printf("Digite a porta: \n"); std::cin>> porta;*/ // sock.criaSock(ip,porta); sock.criaSock("127.0.0.1", "2222"); if(sock.recebeMsg(bufferrecv, sizeof(bufferrecv), gState) == 1) { estadoAtual = jogando; printf("Conexao feita jogo inicio \n"); //sock.nBlock(); } break; //loop do jogo case jogando: /*message = TTF_RenderText_Solid( font, msg, textColor ); desenhar(30,20,message,screen); desenhar(w-message->w-50,20,message,screen); message = TTF_RenderText_Solid( font, itoa(j1.ponto,ponto,10), textColor ); desenhar(140,20,message,screen); message = TTF_RenderText_Solid( font, itoa(j2.ponto,ponto,10), textColor ); desenhar(w-message->w-30,20,message,screen);*/ if( event.type == SDL_KEYDOWN ) { /*switch( event.key.keysym.sym ) { case SDLK_UP: sprintf(buffer,"%f;%d;%s;",deltaTime, 200,"up"); sock.mandaMsg(buffer); break; case SDLK_DOWN: sprintf(buffer,"%f;%d;%s;",deltaTime, 200,"down"); sock.mandaMsg(buffer); break; }*/ if(event.key.keysym.sym == SDLK_UP) { sprintf(buffer,"%f;%d;%s;",deltaTime, 200,"up"); sock.mandaMsg(buffer); }else if(event.key.keysym.sym == SDLK_DOWN){ sprintf(buffer,"%f;%d;%s;",deltaTime, 200,"down"); sock.mandaMsg(buffer); } } sock.recebeMsg(bufferrecv, sizeof(bufferrecv), gState); desenhar(gState.j1->posP.x, gState.j1->posP.y, tileP, screen); desenhar(gState.j2->posP.x, gState.j2->posP.y, tileP, screen); desenhar(gState.bola->posB.x, gState.bola->posB.y, tileB, screen); break; //fim do jogo case fim: if(gState.j1->ponto == 10) { message = TTF_RenderText_Solid( font, "You Win!!", textColor ); desenhar(w/2-message->w/2,h/2,message,screen); }else message = TTF_RenderText_Solid( font, "Game Over", textColor ); desenhar(w/2-message->w/2,h/2,message,screen); break; } SDL_Flip(screen); SDL_FillRect(screen,0,0); //verificação de frames if(thisTime < 1000 / FRAMES_PER_SECOND ) { SDL_Delay( ( 1000 / FRAMES_PER_SECOND ) - thisTime ); } } clean_up(); return 0; }
bool TexturaBase::desenhar(const Quad& retangulo, int x, int y, float rot, const Vetor2D ancora, const Vetor2D& escala, Cor cor, EnumInverterDesenho inverter) { return desenhar(retangulo, x, y, rot, ancora.x, ancora.y, escala.x, escala.y, cor, inverter); }
bool TexturaBase::desenhar(int x, int y, float rot, float ancora_x, float ancora_y, float escala_x, float escala_y, Cor cor, EnumInverterDesenho inverter) { Quad q(0, 0, largura, altura); return desenhar(q, x, y, rot, ancora_x, ancora_y, escala_x, escala_y, cor, inverter); }