Jogo defutebol simples (com gráficos)
Publicado por Samuel Leonardo 17/12/2008
[ Hits: 10.727 ]
Homepage: localhost
Download PING_PONG_LINUX.tar.gz
Jogo clone do famoso pong, um joguinho muito antigo inventado pelos criadores da empresa Atari; fez muito sucesso nos anos 70.
Acompanha uma versão pré-compilada.
Para compilar: gcc -o pong pong.c -lSDL
Para executar: ./pong
t++!!!
// desenvolvido por Samuel Leonardo (Sam L.) -> 14/12/2008 // // JOGO SIMPLES DE "FUTEBOL" NO ESTILO DO GAME CLASSICO PONG. // GAME ALTO AJUSTÁVEL, OU SEJA, SE VOCE MUDAR O TAMANHO DE QUALQUER IMAGEM DO JOGO // NÃO PRECISARÁ MUDAR NADA NO CODIGO FONTE. // ATENÇÃO: VOCE PRECISA BAIXAR OS ARQUIVOS DAS IMAGENS DO JOGO. #include <stdio.h> #include <SDL/SDL.h> void ControlaFPS(int delay) { delay = SDL_GetTicks() - delay; if(delay < 60) SDL_Delay(60 - delay); } int main(int argc, char *argv[]) { char player[30]; printf("COMANDOS:\n"); printf("\t-Setas para cima e para baixo controlam o paddle.\n"); printf("\t-Barra de espaço (Re)inicia o jogo.\n"); printf("\t-Botão 'x' aumenta ou diminui a velocidade da bola.\n"); printf("\t-Botão 'Esc' finaliza o jogo.\n"); printf("\tVoce se encontra à esquerda\n"); printf("Digite seu nome:\n"); scanf(" %[^\n]s",&player); system("clear"); printf("Galvão_Bueno: \n\t -Bem amigos da rede Globo vai começar a partida\n"); printf("\tentre '%s' e CPU pela copa Linux de futebol virtual.\n\n", player); sleep(1); printf("Sam L.: -PUXA VIDA ESSA FOI DE LASCAR!:P hehehe!!!\n\n"); SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen, *paddle, *ball, *campo; //posicões dos jogadores e da bola SDL_Rect jogador, cpu, ball_dst; paddle = SDL_LoadBMP("paddle.bmp"); ball = SDL_LoadBMP("bola.bmp"); campo = SDL_LoadBMP("campo.bmp"); jogador = (SDL_Rect){0,campo->h/2,paddle->w,paddle->h}; cpu = (SDL_Rect){(campo->w - paddle->w),campo->h/2,paddle->w,paddle->h}; ball_dst = (SDL_Rect){campo->w/2,campo->h/2,ball->w,ball->h}; screen = SDL_SetVideoMode(campo->w,campo->h,16,SDL_SWSURFACE | SDL_ANYFORMAT); int velo_x=5,velo_y=5, iniciar=0; int ponto_cpu=0,ponto_player=0; int fim=0, tempo_agora; while(fim == 0) { tempo_agora = SDL_GetTicks(); Uint8 *teclado; SDL_PumpEvents(); teclado = SDL_GetKeyState(0); //COMEÇAR O JOGO? if(teclado[SDLK_SPACE]) iniciar = 1; //TERMINAR O JOGO? if(teclado[SDLK_ESCAPE]) fim = 1; //ALMENTAR OU DIMINUIR A VELOCIDADE DO JOGO? if((teclado[SDLK_x])) { velo_x = velo_x + 1; velo_y = velo_y + 1; } //CONTROLA O JOGADOR if((teclado[SDLK_UP])&&(jogador.y > 0)) jogador.y = jogador.y - 13; if((teclado[SDLK_DOWN])&&(jogador.y + jogador.h < campo->h)) jogador.y = jogador.y + 13; //MOVIMENTA A BOLA E A CPU if(iniciar == 1) { ball_dst.x = ball_dst.x + velo_x; ball_dst.y = ball_dst.y + velo_y; //I.A. da CPU cpu.y = ball_dst.y - 5; } //REBATENDO A BOLA NAS BORDAS DO CAMPO if((ball_dst.y + velo_y < 0) || (ball_dst.y + velo_y + ball_dst.h > campo->h)) velo_y = -velo_y; //CONTANDO OS PONTOS... //...CONTRA O JOGADOR OU CONTRA A CPU... //... E REBATENDO A BOLA NAS LATERAIS DO CAMPO if((ball_dst.y + velo_y <= jogador.y + jogador.h) && (ball_dst.y + velo_y + ball_dst.h >= jogador.y) && (ball_dst.x + velo_x <= jogador.x + jogador.w)) { velo_x = -velo_x; printf("Galvão_Bueno: \n\t-'%s' rebate a bola!!!\n", player); } else { if(ball_dst.x + velo_x < 0) { iniciar = 0; ball_dst.x = campo->w/2; ball_dst.y = campo->h/2; ponto_cpu++; printf("Galvão_Bueno:\n\t -Goool da CPU!!!\n"); } } if((ball_dst.y + velo_y <= cpu.y + cpu.h) && (ball_dst.y + velo_y + ball_dst.h >= cpu.y) && (ball_dst.x + velo_x + ball_dst.w >= cpu.x)) { velo_x = -velo_x; printf("Galvão_Bueno: \n\t-CPU rebate a bola!!!\n"); } else { if(ball_dst.x + velo_x + ball_dst.w > campo->w) { iniciar = 0; ball_dst.x = campo->w/2; ball_dst.y = campo->h/2; ponto_player++; printf("Galvão_Bueno:\n\t -Goooool eeeeeehhhh do '%s'!!!\n", player); } } SDL_BlitSurface(campo,NULL,screen,NULL); SDL_BlitSurface(paddle,NULL,screen,&jogador); SDL_BlitSurface(paddle,NULL,screen,&cpu); SDL_BlitSurface(ball,NULL,screen,&ball_dst); SDL_Flip(screen); ControlaFPS(tempo_agora); } SDL_Quit(); printf("Galvão_Bueno: \n\t-Com o placa de '%s' %d X %d CPU\n",player,ponto_player,ponto_cpu); printf("\t-Terminamos mais um jogo de '%s' contra CPU.\n", player); return 0; }
Controle de estoque com listas
S. MarioBros - Editor de fase 0.1
Arquivos utilizados no artigo: "Desenvolvendo um plugin para o XMMS"
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)