Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao,
sto facendo un semplice programma: muovere un "#" dentro alla console.
Ecco il sorgente:
Codice sorgente - presumibilmente C++
#include<iostream>
#include<fstream>
usingnamespace std;
constint width=50;
constint height=15;
bool mappa[height][width];
int x;
int y;
void Azzera(){
for(int i=1; i<=height; i++){
for(int j=1; j<=width; j++){
mappa[i][j]=false;
}
}
}
void Stampa(){
for(int i=1; i<=height; i++){
for(int j=1; j<=width; j++){
if(mappa[i][j])cout<<"#";
elsecout<<"-";
}
cout<<endl;
}
}
int main(){
Azzera();
x=25;
y=8;
mappa[y][x]=true;
Stampa();
system("pause");
return0;
}
Praticamente è ancora una bozza mancano le funzioni per gestire lo spostamento del "#". Comunque capita un errore "strano" (magari è solo distrazione ma non capisco dov'è l'errore)
Dovrebbe stampare alla coordinate x=25 e y=8 il carattere "#" e per tutto il resto della mappa il carattere "-". Eppure a me l'output esce così:
http://img530.imageshack.us/img530/2231/immagine123.png Non capisco come mai vengano stampati due "#" senza motivo.
p.s. Se stampo subito dopo la funziona Azzera() tutta la mappa è piena di "-", quindi non è un errore delle funzioni Azzera o Stampa
non ho guardato bene il motivo dell'errore, ma posso dirti che non puoi loopare su un array in quel modo
se hai un array di 20 elementi ad esempio, il primo elemento ha indice 0 mentre l'ultimo 19, tu invece vai da 1 a 20
Ti ho riscritto il codice, IMO adesso è più comprensibile( anche se si potrebbe migliorare ancora )
per far muovere un carattere sullo schermo puoi usare la gotoxy(int x,int y)
mettendo in un ciclo la coordinata che cresce con un rallentamento e il gioco è fatto! se vuoi saperne di più ti posto la procedura! ciao!!!
per far muovere un carattere sullo schermo puoi usare la gotoxy(int x,int y)
mettendo in un ciclo la coordinata che cresce con un rallentamento e il gioco è fatto! se vuoi saperne di più ti posto la procedura! ciao!!!
Posta, interessa anche a me! Ma la funzione gotoxy è solo del C++?
if(kbhit()) tasto=getch();//leggo il tasto per uscire con ESC
gotoxy(col,rig); putch('#');//cancello
_sleep(30);//ritardo la scrittura per effetto camminamento
gotoxy(col,rig); putch(' ');//scrivo
col++;//incremento la riga
if(col == 75){ col =1;}
}while(tasto!=27);//27 è ESC
getch();
return0;
}
void gotoxy(int x,int y)
{
COORD coor;
HANDLE hOutput;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
coor.X= x;
coor.Y= y;
SetConsoleCursorPosition(hOutput,coor);
}
anche in c funziona solo che il ritardo è delay(millisecondi) inclusa nella libreria dos.h, inoltre il c dovrebbe avere nella conio.h gia inclusa la gotoxy in caso contrario aggiungi la libreria windows.h e la procedura ke ti ho scritto spero di averti aiutato ciaoo
Ultima modifica effettuata da carmine il 31/10/2010 alle 14:51