Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
caioss

Ajuda com sistema de repetição

Recommended Posts

então pessoal fiz isso no turbo C é um jogo de nave porém não consigo fazer com que ele atire e possa movimenta-la

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

#include <dos.h>

#include "MOUSE.h"

void main(void)

{

/*DECLARANDO AS VARIAVEIS*/

int X_tiro;

int Y_tiro;

int X_nave;

int Y_nave;

int Yold;

int Xold;

int B=0;

clrscr(); // LIMPAR A TELA PRA COMECAr

InitMouse();

// DisplayMouse();

while(!kbhit()) // em loop ate que o teclado seja pressionado

{

// IMPORTANTE

// As variaveis X e Y indicam a posição da nave na tela

X_nave=XMouse()+1; // coordenadas do mouse

Y_nave=YMouse()+1; //

B=ButtonMouse(); //Ler qual o valor do botao apertado...

if (X_nave>70) X_nave=60; // evita que a tela seja excedida

if (Y_nave>24) Y_nave=19; // evita que a tela seja excedida

if (Y_nave<04) Y_nave=04;

gotoxy(1,1); // mostra as coordenadas na tela

cprintf("X_nave=%d \n",X_nave);

gotoxy(1,2);

cprintf("Y_nave=%d \n",Y_nave);

gotoxy(1,3);

cprintf("B=%d \n",B); // mostra o valor da variavel B

// rotinas para limpar o desenho anterior (old=velho) do cursor

textcolor(0); // Desenha na cor do fundo

gotoxy(Xold,Yold);

cprintf(" _|*|_ ");

gotoxy(Xold,Yold+1);

cprintf(" |-- --| ");

gotoxy(Xold,Yold+2);

cprintf(" |*|| (_@_) ||*| ");

gotoxy(Xold,Yold+3);

cprintf(" | DS ||||_|||| CS | ");

gotoxy(Xold,Yold+4);

cprintf("|(!)(!) (!)(!)|");

textcolor(12); // retorna cor original

// Rotinas para desenhar A NAVE

gotoxy(X_nave,Y_nave);

cprintf(" _|*|_ ");

gotoxy(X_nave,Y_nave+1);

cprintf(" |-- --| ");

gotoxy(X_nave,Y_nave+2);

cprintf(" |*|| (_@_) ||*| ");

gotoxy(X_nave,Y_nave+3);

cprintf(" | DS ||||_|||| CS | ");

gotoxy(X_nave,Y_nave+4);

cprintf("|(!)(!) (!)(!)|");

Yold=Y_nave; // guarda as variaveis antigas X e Y

Xold=X_nave;

if(B==1) /*TIRO 1*/

{

textcolor(7);

Y_tiro=Y_nave;

X_tiro=X_nave;

while(Y_tiro!=2)

{

gotoxy(X_tiro+3,Y_tiro);

cprintf(" ");

gotoxy(X_tiro+15,Y_tiro);

cprintf(" ");

Y_tiro--;

gotoxy(X_tiro+3,Y_tiro);

cprintf(".*.");

gotoxy(X_tiro+15,Y_tiro);

cprintf(".*.");

delay(100);

if(Y_tiro==2) /*Limpando a linha FINAL*/

{

gotoxy(X_tiro,Y_tiro);

cprintf(" ");

}

}

}

if(B==2) /*TIRO 2*/

{

textcolor(7);

Y_tiro=Y_nave;

X_tiro=X_nave;

while(Y_tiro!=2)

{

gotoxy(X_tiro+3,Y_tiro);

cprintf(" ");

gotoxy(X_tiro+14,Y_tiro);

cprintf(" ");

Y_tiro--;

gotoxy(X_tiro+3,Y_tiro);

cprintf("___!___");

gotoxy(X_tiro+14,Y_tiro);

cprintf("___!___");

delay(100);

if(Y_tiro==2)

{

gotoxy(X_tiro,Y_tiro);

cprintf(" ");

}

};

} } // fim do loop

}// chave final do programa

JA tentei fazer break mas nao consegui se alguem puder ajudar!!!!!!

não sei se vces conseguirao roda-lo por causa do arquivo Mouse.H, mas se puderem ajudar!

OBRIGADO,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que você não tenta usar o teclado primeiro antes de tentar o mouse?

Dá uma olhada no exemplo abaixo e faça uma comparação com o seu código.


#include <math.h>

/* Prototipagem das funcoes */

void nave(char[3][3]);
void sobe_tiro(void);

/* Variaveis Globais */

int c_nave=20, l_nave=23; //Centro da nave na linha 23 e col. 20
int c_tiro=0, l_tiro; //Coordenadas do tiro

char N1[3][3]={
{' ','+',' '},
{'<',' ','>'},
{'!','!','!'},
};

/* Fucoes */

void nave(char desenho[3][3])
{
int c,l;
textcolor(BLACK);
for(c=0;c<=2;c++)
{
for(l=0;l<=2;l++)
{
gotoxy((c_nave-1)+c,(l_nave-1)+l);
putch(desenho[l][c]);
}
}
}

void sobe_tiro(void)
{
textcolor(RED);
gotoxy(c_tiro,l_tiro);
putch(' ');
if(l_tiro==1)
c_tiro=0;
else
{
l_tiro--;
gotoxy(c_tiro,l_tiro);
putch('*');
}
}

/* Principal */

void main(void)
{
int tecla=0,contador=1;
char temp;

/* Inicialicacao da tela */

textcolor(BLACK); //Texto preto
textbackground(LIGHTGRAY); //Fundo cinza claro
_setcursortype(_NOCURSOR); //Sem cursor
clrscr(); //Limpa tela

gotoxy(c_nave,l_nave);
nave(N1);

while(temp!=27)
{
if(kbhit())
{
temp=getch();
switch(temp){
case 'a':
// mover para esquerda
break;
case 'd':
// mover para direita
break;
case ' ':
if(c_tiro==0)
{
textcolor(RED);
c_tiro=c_nave;
l_tiro=l_nave-2;
gotoxy(c_tiro,l_tiro);
putch('*');
}
break;
case 'p':
tecla=1;
break;
}
}
delay(10);
contador++;
if(contador==10)
{
contador=1;
if(c_tiro!=0)
sobe_tiro();
}
}
}

#include <conio.h>

Editado por crudo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×