Ir ao conteúdo
  • Cadastre-se

Ajuda com sistema de repetição


caioss

Posts recomendados

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,

Link para o comentário
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>

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...