PDA

Visualizza la versione completa : [C++] Creazione del gioco "Snake"


iacoposk8
07-12-2008, 19:24
ciao a tutti.. stavo cercando di programmare un giochino per la gioia del mio insegnante di informatica, snake per la precisione, avete in mente? è tipo un serpente (che nel programma apparirà con una serie di '0') che si deve mangiare delle mele (che appaiono come 's') che deve stare attento a non morsicare il bordo della matrice e se stesso. Mi sono trovato davanti ad un problema che non riesco a risolvere.. io praticamente devo fare che il serpente all'inizio si muove verso destra finche uno non schiaccia il tasto (b) per farlo andare in giù per esempio.. il programma che ho fatto è strutturato più o meno come riportato sotto.. nella parte di programma dove fa tutto ho semplicemente scritto //istruzione per rendere più facile la lettura di questo programma TEORICO... il problema è: quando lo faccio partire per far muovere il serpente devo continuamente schiacciare 'a' mentre invece dovrebbe muoversi verso destra da solo finchè l'utente non schiaccia il tasto per farlo andare in giu.. ho provato a togliere if(getch())=='b') e return(0); e va perfettamente solo che va solo a destra e non può scendere.. credo sia dovuto al fatto che quando si mette il getch() il programma attende un comando e senza quello nn va avanti ma non so come ovviare al problema.. vi ringrazio in anticipo


#include <iostream.h>
#include<conio.h>
using namespace std;
int main()
{
while(1)
{
switch(getch())
{
case 'a':
{
while(1)
{
//istruzione
if(getch())=='z')
return(0);//se premi 'b' esci dal while
}
break;
}
case 'b':
{
while(1)
{
//istruzione
}
break;
}
}
}
getch();
}

iacoposk8
08-12-2008, 13:14
nessuno sa rispondermi? io praticamente devo fare in modo che se premo 'b' il programma termina ma se non premo nulla continua a stampare all'infinito.. il problema è che quando il programma arriva al getch() non va avanti finchè non inserisco qualcosa invece a me serve che continui finche non digito 'b' ad esempio

oregon
08-12-2008, 13:17
Usa la

kbhit()

per controllare se e' stato pressato un tasto e, se e' cosi', controlla con la getch() quale tasto e' ...

P.S. Nel titolo va sempre il linguaggio ...

iacoposk8
08-12-2008, 15:18
a ok.. grazie.. ho visto un pò.. son riuscito ad usarla solo che se metto solo kbhit() appena premo un tasto un tasto qualsiasi fa il for che mi interessa ma se gli volessi dire se premi 'b' fai il for che viene dopo e se premo ad esempio 'k' continua a fare quel for che dovrei scrivere??

un altra cosa.. cercando un pò ho visto che spesso vien scritta così: !kbhit() con un '!' davanti.. che differenza c'è se non lo metto?

oregon
08-12-2008, 15:36
Originariamente inviato da iacoposk8
a ok.. grazie.. ho visto un pò.. son riuscito ad usarla solo che se metto solo kbhit() appena premo un tasto un tasto qualsiasi fa il for che mi interessa ma se gli volessi dire se premi 'b' fai il for che viene dopo e se premo ad esempio 'k' continua a fare quel for che dovrei scrivere??

La kbhit, come avrai visto dalla documentazione,si accorge solamente della pressione di un tasto. Subito dopo la kbhit devi chiaramere la getch per capire quale tasto e' stato pressato.


un altra cosa.. cercando un pò ho visto che spesso vien scritta così: !kbhit() con un '!' davanti.. che differenza c'è se non lo metto?

Che significato ha il

!

in C/C++?

iacoposk8
08-12-2008, 16:14
credo sia il diverso :zizi:
e per l'altro problema? ovvero dargli una lettera precisa da controllare?

oregon
08-12-2008, 16:18
Originariamente inviato da iacoposk8
credo sia il diverso :zizi:
e per l'altro problema? ovvero dargli una lettera precisa da controllare?

Usa la getch dopo la kbhit ... prova ...

iacoposk8
08-12-2008, 16:22
non capisco come.. del tipo.. un progamma stupido continua a stampare 'no' ma se schiaccio un tasto mi dice 'si'


#include<conio.h>
#include<iostream.h>
#include<windows.h>
#include<ctime>
#include<stdio.h>
using namespace std;
main()
{
int i=1;
while(1)
{
if (!kbhit())
printf("no");
else
{
printf("si");
getch();
}
i++;
Sleep(500);
}
}

dove dovrei scrivere getch() per far si che se schiaccio 's' mi stampi si e se schiaccio qualunque altro tasto (o anche se non schiaccio nulla) mi stampi no?

oregon
08-12-2008, 16:26
Mi sembrava chiaro ... e' la getch che ottiene il carattere ...



else
{
if(getch()=='s')
printf("si");
}

iacoposk8
08-12-2008, 16:30
no con me nn devi dare nulla per scontato.. non è da tanto che programmo.. però andando a scuola qualcosina la so.. però mi piace far ste cose... comunque è perfetto grazie... sei invincibile :D

Loading