[ +/- ] [ Data/Hora: 24 Mai 2013, 00:57 ]


Criar um novo TópicoWrite comments Página 1 de 1   [ 5 posts ]
Autor Mensagem
 Assunto da Mensagem: tiro em jogo river raid em C
MensagemEnviado: 28 Jun 2011, 22:46 
Membro

Registado: 28 Jun 2011, 22:21
Mensagens: 3
Ola pessoal, estou com um trabalho da faculdade para fazer em C e empaquei a parte de implementar o tiro para o jogo. Se alguém puder me dar uma ideia de como fazer isto ficaria grato.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <conio2.h>
#include <windows.h>
#define VAZIO ' '
#define PAREDE '|'
#define HELICOPTERO 'X'
#define NAVE '^'
#define VIDA '+'
#define TIRO '*'

void inicializamapa(char mat[20][20]);
void desenhamapa (char mat[20][20],int coljogador);
void gerainimigos (char mat[20][20]);
void controle (float segundos);
void colisao(char mat[20][20],int coljogador, int *vida);
void tiro(char mat[20][20], int *coljogador);
void gotoxy(int x, int y);

int main(int argc, char *argv[])
{
char mat[20][20],dig;
int coljogador=10,vida,combustivel,km,dx,dy;

inicializamapa(mat);
km = 0;
combustivel=50;
vida = 3;
while ((vida>0) && (combustivel>0))
{
printf("%d - %d - %d",combustivel,km,vida);
if (kbhit())
{
dig = getch();
}else
{
system ("cls");
gerainimigos(mat);
desenhamapa(mat,coljogador);
colisao(mat,coljogador,&vida);
dig = 0;
controle(0.1);
}
/*########################################################*/
//comando para direcionar a nave
/*########################################################*/
switch (dig)
{
case 75:
if (coljogador > 5)
{
coljogador --;
combustivel --;
km ++;
system ("cls");
gerainimigos(mat);
desenhamapa(mat,coljogador);
colisao(mat,coljogador,&vida);
controle(0.1);
} break;
case 77:
if (coljogador <15)
{
coljogador ++;
combustivel --;
km ++;
system ("cls");
gerainimigos(mat);
desenhamapa(mat,coljogador);
colisao(mat,coljogador,&vida);
controle(0.1);
}break;
case 32:
tiro(mat,&coljogador);

}
/*########################################################*/
}
system ("pause");
return 0;
}
/*########################################################*/
//Função para iniciarlizar o cenario
/*########################################################*/
void inicializamapa(char mat[20][20])
{
int i,j;
for (i=0;i<20;i++)
{
for (j=0;j<20;j++)
{
mat[i][j] = VAZIO;
if((j==5) || (j==15) && (i<20))
{
mat[i][j] = PAREDE;
}
}
}
}
/*########################################################*/
//Função para imprimir o cenario
/*########################################################*/
void desenhamapa(char mat[20][20],int coljogador)
{
int i,j;
for (i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
if (i == 19 && j == coljogador)
{
printf("%c",NAVE);
}else
{
printf("%c",mat[i][j]);
}
printf(" ");
}
printf("\n");
}
}
/*########################################################*/
//Função para gerar inimigos
/*########################################################*/
void gerainimigos(char mat[20][20])
{
int i,j,posinimigo,posvida;
//inverte valores para atualizar posição dos inimigos

for (i=18;i>=0;i--)
{
for (j=0;j<20;j++)
{
mat[i+1][j] = mat[i][j];
}
}
//inicializa a primeira linha com vazio para "entrar" novos inimigos
for (j=0;j<19;j++)
{
mat[0][j] = VAZIO;
}
//coloca parede na primeira linha iniciada com vazio
mat[0][5] = PAREDE;
mat[0][15] = PAREDE;
//gerar inimigos aleatoriamente
//srand(time(NULL));
if ((rand() % 100) < 40)
{
posinimigo = 6 + (rand() % 9);
mat[0][posinimigo] = HELICOPTERO;
}
//gera vidas
if ((rand() % 100) < 20)
{
posvida = 6 + (rand() % 9);
if (posvida != posinimigo)
{
mat[0][posvida] = VIDA;
}
}
}
/*########################################################*/
//Função para controle de velocidade dos inimigos
/*########################################################*/
void controle(float segundos)
{
clock_t ciclo;

ciclo = clock() + segundos * CLOCKS_PER_SEC;
while (clock () < ciclo);
}
/*########################################################*/
//Função jogador
/*########################################################*/
void colisao(char mat[20][20],int coljogador, int *vida)
{
if (mat[18][coljogador] == HELICOPTERO)
{
(*vida) --;
}
if (mat[18][coljogador] == VIDA)
{
(*vida) ++;
}
if (mat[18][coljogador] == PAREDE)
{
(*vida) --;
}
}
void tiro(char mat[20][20], int *coljogador)
{
int y,x;
x= *coljogador;
y=18;
gotoxy(x,y);
printf("%c",TIRO);
y --;

}
void gotoxy(int x, int y)
{
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x-1,y-1});
}


Topo
 Perfil  
 
 Assunto da Mensagem: Re: tiro em jogo river raid em C
MensagemEnviado: 29 Jun 2011, 09:31 
Membro Avançado

Registado: 23 Nov 2003, 18:58
Mensagens: 2812
Localização: Brasil
Da uma olhada nessa discussão aqui: viewtopic.php?t=53777&p=374600

_________________
Quer aprender a fazer jogos?
http://www.pontov.com.br/
Meus jogos


Topo
 Perfil  
 
 Assunto da Mensagem: Re: tiro em jogo river raid em C
MensagemEnviado: 29 Jun 2011, 10:52 
Membro

Registado: 28 Jun 2011, 22:21
Mensagens: 3
bcsanches2 Escreveu:
Da uma olhada nessa discussão aqui: viewtopic.php?t=53777&p=374600



muito obrigado pela resposta... :D...porém pelo oq vi ele usa alegro, e queria algo mais simples...fiz um aqui nesta madrugada...mais ele fica meio travando...segue abaixo o código que tem o tiro...

switch (dig)
{
case 75:
if (coljogador > 5)
{
coljogador --;
combustivel --;
km ++;
system ("cls");
gerainimigos(mat);
desenhamapa(mat,coljogador);
colisao(mat,coljogador,&vida);
controle(0.1);
} break;
case 77:
if (coljogador <15)
{
coljogador ++;
combustivel --;
km ++;
system ("cls");
gerainimigos(mat);
desenhamapa(mat,coljogador);
colisao(mat,coljogador,&vida);
controle(0.1);
}break;
case 32:
ativa = 1;
n = 18;
break;
}
if (ativa == 1)
{

while (n>=0)
{
if (mat[n][dx] == HELICOPTERO)
{
mat[n][dx] = VAZIO;
break;
}
dx = coljogador + 10;
gotoxy(dx,n);
printf("%c",TIRO);
//printf("%c",VAZIO);
system ("cls");
desenhamapa(mat,coljogador);
gerainimigos(mat);

if (kbhit())
{
dig = getch();
}else
{
system ("cls");
gerainimigos(mat);
desenhamapa(mat,coljogador);
colisao(mat,coljogador,&vida);
dig = 0;
controle(0.1);
}
//movenave(dig,&coljogador,&combustivel,&km)
/*########################################################*/
//comando para direcionar a nave
/*########################################################*/

switch (dig)
{
case 75:
if (coljogador > 5)
{
coljogador --;
combustivel --;
km ++;
system ("cls");
gerainimigos(mat);
desenhamapa(mat,coljogador);
colisao(mat,coljogador,&vida);
controle(0.1);
} break;
case 77:
if (coljogador <15)
{
coljogador ++;
combustivel --;
km ++;
system ("cls");
gerainimigos(mat);
desenhamapa(mat,coljogador);
colisao(mat,coljogador,&vida);
controle(0.1);
}break;
}


gotoxy(coljogador+10,--n);
printf("%c",TIRO);
controle (0.1);

}


if (n<0)
{
ativa = 0;
}
}

se puder me ajudar a melhorar isto...vou continuar tentando aqui também..caso eu consiga posto o código também para ajudar alguém que queira..


Topo
 Perfil  
 
 Assunto da Mensagem: Re: tiro em jogo river raid em C
MensagemEnviado: 29 Jun 2011, 10:55 
Membro Avançado

Registado: 23 Nov 2003, 18:58
Mensagens: 2812
Localização: Brasil
Kra, coloque código fonte usando as tags [ code ], código sem edentação é impossível de ler.

Independente dele usar allegro, a rotina e o conceito de gerenciar múltiplos objetos em um jogo é a mesma.

_________________
Quer aprender a fazer jogos?
http://www.pontov.com.br/
Meus jogos


Topo
 Perfil  
 
 Assunto da Mensagem: Re: tiro em jogo river raid em C
MensagemEnviado: 29 Jun 2011, 11:38 
Membro

Registado: 28 Jun 2011, 22:21
Mensagens: 3
bcsanches2 Escreveu:
Kra, coloque código fonte usando as tags [ code ], código sem edentação é impossível de ler.

Independente dele usar allegro, a rotina e o conceito de gerenciar múltiplos objetos em um jogo é a mesma.


Opa, desculpe cara...é minha primeira vez aqui no unidev...e desculpe denovo por não ter lido direito o link que me mandou...acabei dando uma olhada meio correndo e tals...(periodo de provas na facul ja viu né?kk)...mais vou ler com mais calma e tentar compreender...vi seu blog..achei muito bom...

obrigado pela atenção...


Topo
 Perfil  
 
Mostrar mensagens anteriores:  Ordenar por  
Criar um novo TópicoWrite comments Página 1 de 1   [ 5 posts ]
Similar topics
Usando sketchup para fazer jogo 2,5D
Fórum: Unity3D
Autor: Adamantil
Respostas: 3
> Handgun Feita No 3ds Max 8 Para Meu Jogo, comentem =)
Fórum: Modelagem 3D
Autor: Gaviao_dos_Games
Respostas: 8
Jogo tipo Fire emblem e Front Mission..
Fórum: Pascal/Delphi
Autor: MiDi
Respostas: 1
jogo de corrida no c
Fórum: C/C++
Autor: dimarm
Respostas: 0
Melhor API para criar jogo no Delphi?
Fórum: Pascal/Delphi
Autor: KLF
Respostas: 7
Topo


Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante


Criar Tópicos: Proibído
Responder Tópicos: Proibído
Editar Mensagens: Proibído
Apagar Mensagens: Proibído

Pesquisar por:
Ir para:  

cron


Powered by phpBB ©

Virtual Object Informtica Ltda. Fone/Fax: (15)3231-6840