Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C++] Gioco "Snake"

  1. #1

    [c] Gioco dello snake

    Ciao a Tutti sto realizzando il gioco snake in c... come compilatore uso turbo c++3.0. Per ora ho iniziato solo facendo un abbozzo senza ne punti ne che si muove da solo... praticamente ho fatto degli asterischi che si possono muovere con le freccette della tastiera il problema che se ad esempio sono 3 e sono tutti in fila e la direzione è verso destra e io premo freccia giu si sposta quello a sinistra...
    cioè situazione iniziale
    *** direzione verso destra premo freccia giu e

    **
    *
    invecie dovrebbe essere
    **
    ' *
    grazie a tutti
    ciao

    ecco il codice:

    //Gioco snake (per ora una parte )
    //Davide Granata
    #include<conio.h>
    #include<iostream.h>
    #include<dos.h>
    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>

    void main()
    {
    clrscr();
    randomize();
    int x=2,y=2,vx[99],vy[99],lun=2,i,bx,by;
    char c=' ',dir;
    for(i=0;i<lun;i++,x++){vx[i]=x;vy[i]=y;}

    for(i=0;i<lun;i++){
    gotoxy(vx[i],vy[i]);
    cout<<"*";}

    while(c!=13){
    x=vx[lun-1];
    y=vy[lun-1];
    chiedi:
    c=getch();
    if(c==75&&dir!='r'){x--;dir='l';}
    else if(c==77&&dir!='l'){x++;dir='r';}
    else if(c==72&&dir!='d'){y--;dir='u';}
    else if(c==80&&dir!='u'){y++;dir='d';}
    else if(c==13)goto fine;
    else goto chiedi;


    bx=vx[0];
    by=vy[0];



    for(i=0;i<lun-1;i++){
    vx[i]=vx[i+1];
    vy[i]=vy[i+1];
    }

    vx[lun-1]=x;
    vy[lun-1]=y;







    gotoxy(vx[lun-1],vy[lun-1]);
    cout<<"*";


    gotoxy(bx,by);
    cout<<" ";

    }

    getch();
    fine:
    }
    ps nel disegno ignorate l'apice ho dovuto metterlo x forza senno non riuscivo a spaziare tutto correttamente

  2. #2
    Questa è la versione di snake quasi finito rimane sempre il problema descritto nel post precedente
    //Davide Granata
    #include<conio.h>
    #include<iostream.h>
    #include<dos.h>
    #include<stdio.h>
    #include<time.h>
    #include<stdlib.h>

    void main()
    {
    textbackground(LIGHTGRAY);
    clrscr();
    randomize();
    int x=2,y=2,vx[99],vy[99],lun=1,i,bx,by,inizio=0,cibox,ciboy,genera=1,ok=0, p=0,punti=0;
    char c=' ',dir='r';

    gotoxy(1,22);
    for(i=0;i<80;i++)cout<<"-";
    for(i=0;i<lun;i++,x++){vx[i]=x;vy[i]=y;}

    for(i=0;i<lun;i++){
    gotoxy(vx[i],vy[i]);
    textcolor(6);
    //textbackground(5);
    cprintf("*");}


    while(c!=13&&p==0){

    //Se serve genero il cibo
    if(genera==1){
    do{
    ok=1;
    cibox=random(79)+1;
    ciboy=random(21)+1;
    for(i=0;i<lun-1;i++){
    if(vx[i]==cibox&&vy[i]==ciboy)ok=0;
    }
    }while(ok!=1);
    //Ora lo disegno
    gotoxy(cibox,ciboy);
    textcolor(LIGHTBLUE);
    cprintf("0");
    genera=0;
    }


    x=vx[lun-1];
    y=vy[lun-1];
    if(kbhit()){

    c=getch();
    if(c==75&&dir!='r'){x--;dir='l';}
    else if(c==77&&dir!='l'){x++;dir='r';}
    else if(c==72&&dir!='d'){y--;dir='u';}
    else if(c==80&&dir!='u'){y++;dir='d';}
    else if(c==13)goto fine;
    else goto chiedi;
    inizio=1;
    }
    else{if(dir=='r')x++;
    if(dir=='l')x--;
    if(dir=='u')y--;
    if(dir=='d')y++;
    }
    if(inizio!=0){
    bx=vx[0];
    by=vy[0];



    for(i=0;i<lun-1;i++){
    vx[i]=vx[i+1];
    vy[i]=vy[i+1];
    }



    vx[lun-1]=x;
    vy[lun-1]=y;


    gotoxy(bx,by);
    cout<<" ";

    gotoxy(vx[lun-1],vy[lun-1]);
    textcolor(6);
    cprintf("*");

    //textcolor(3);
    //textbackground(5);
    //cprintf(" ");

    chiedi:
    }
    //Controllo se becco il cibo
    if(vx[lun-1]==cibox&&vy[lun-1]==ciboy){genera=1;punti=punti+2;lun++;
    //Sposto tutti di un posto
    for(i=lun-1;i>0;i--){vx[i]=vx[i-1];vy[i]=vy[i-1];}
    vx[0]=vx[1]-1;
    vy[0]=vy[1]-1;


    };

    //Controllo se il serpente tocca un muro
    if(x<1||x>79||y<1||y>21)p=1;

    //Ora controllo si mangia se stesso
    for(i=0;i<lun-2;i++)
    {
    if(vx[lun-1]==vx[i]&&vy[lun-1]==vy[i])p=1;

    }
    //Stampo punti
    textcolor(0);
    gotoxy(1,24);
    cprintf(" ");
    gotoxy(1,24);
    cprintf("Hai fatto ,%d punti",punti);
    delay(200);

    }
    gotoxy(40,11);cout<<"Hai perso . Premi un tasto per uscire";
    getch();

    fine:
    }

  3. #3

  4. #4
    però a me il programma funzia mi da il probl sopra desritto.....

  5. #5
    Originariamente inviato da frizzo28
    però a me il programma funzia mi da il probl sopra desritto.....
    No guarda stai facendo un pò di confusione, se usi la gotoxy(), textcolor(), textbackground(),
    devi per forza utilizzare la cprintf() o la cputs(), altrimenti le suddette sono perfettamente inutili.
    Quindi anche la cout non c'entra proprio nulla.
    Un consiglio personale, per carità togli quei goto !
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  6. #6
    Guarda che se funziona è solo grazie all'IDE che usi, non vuol dire che sia corretto :rollo:
    printf -> C
    cout -> C++
    oltretutto non c'era neanche l'inclusione di std

  7. #7
    ok grazie a tutti ora sostituisco tutti i cout con cprintf...
    per il problema esposto nel primo post non avreste una soluzione ?
    P. S. Sono newbie del c... è da gennaio che lo studiamo a scuola....

  8. #8
    oltretutto non c'era neanche l'inclusione di std
    Con iostream.h non dovrebbero esserci problemi
    Experience is what you get when you don’t get what you want

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.