Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    snake

    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
    codice:
    #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();
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    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

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    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 ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    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?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    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++?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    credo sia il diverso
    e per l'altro problema? ovvero dargli una lettera precisa da controllare?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da iacoposk8
    credo sia il diverso
    e per l'altro problema? ovvero dargli una lettera precisa da controllare?
    Usa la getch dopo la kbhit ... prova ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    non capisco come.. del tipo.. un progamma stupido continua a stampare 'no' ma se schiaccio un tasto mi dice 'si'
    codice:
    #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?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Mi sembrava chiaro ... e' la getch che ottiene il carattere ...

    codice:
       else
       {
          if(getch()=='s')
             printf("si");
       }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.