|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 9
|
Spostare un oggetto in C++
Salve , ero intenzionato a scrivere un programma in C++ che facesse cadere degli oggetti a random (ad esempio dei " . * ' " ecc...) e un contenitore (ad esempio |____|) con cui prenderli , prima che tocchino il "suolo" , ed ottenere punti.Il contenitore dovrà essere spostato a destra e a sinistra , col semplice ausilio dei tasti "d" e "s". Il mio problema è che non riesco a far muovere l'oggetto. Ho provato in svariati modi , usando la funzione gotoxy. Ma non riesco a farlo muovere nè a sinistra nè a destra.
Codice:
void gotoxy(int x, int y) {
for (int i = 0; i < y; i++) {
cout<<"\n";
}
for (int i = 0; i < x; i++) {
cout<<" ";
}
}
Ho pensato a un ciclo while , che ogni volta che il tasto , viene premuto elimina l'oggetto e lo riscriva , più avanti , ma non riesco. Quindi mi chiedevo , se qualcuno di voi , avesse la pazienza di aiutarmi |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2791
|
Qual è il risultato che ottieni?
Io vedo almeno due problemi da tenere in considerazione: 1- La schermata viene cancellata a ogni render? 2- Come fai se tra 0,0 e x,y vuoi disegnare qualcosa? Per curiosità, è un esercizio scolastico? |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 9
|
Scusate il ritardo
1- Si. 2- Non ho ben capito la domanda Comunque si si Ecco le righe della scelta , dello spostamento a destra : Codice:
while(MOV != 1) {
switch(tasto[0] = getch()) {
case 'd':
while(tasto[0] == 'd'){
cout << "|__|";
system("CLS");
gotoxy(1,0);
cout << "|__|";
return 0;
}
break;
Ultima modifica di Rootnight : 16-01-2013 alle 18:08. |
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2791
|
Quote:
Quote:
Fatto questo dovresti imbatterti in un altro problema, ma ne riparleremo più avanti. Poniamo che nella schermata ci sia alla posizione 10,20 un * e alla posizione 10,50 il contenitore. Come li disegni entrambi sfruttando gotoxy? Comunque non è un esercizio semplice, almeno così come l'hai posto, non è che il tuo professore ti ha chiesto qualcosa di più semplice e tu hai aggiunto complessità all'esercizio? |
||
|
|
|
|
|
#5 | ||||
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 9
|
Quote:
Quote:
Quote:
Quote:
|
||||
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 9
|
Scusate il doppio post e il ritardo
Mi sono reso conto che utilizzando la funzione gotoxy in quel modo, non facevo altro che spostare l'oggetto sempre a 1,0. Quindi ho seguito il tuo consiglio e ho suddiviso il codice in una sottofunzione. E ho riscritto il programma in un altro modo. Ma adesso quando lo eseguo non stampo niente , che ne pensi ? Codice:
#include <iostream>
#include <conio.h>
#define x 75
#define y 20
using namespace std;
int i,j;
void stamp(int floor [][y]);
int main() {
int floor[x][y];
int MOV = 0, r ,c;
char tasto[5];
r = 18;
c = 10;
floor[r][c] = 8;
r = 17;
c = 2;
while(MOV != 1) {
switch(tasto[0] = getch()) {
case 'd':
if(tasto[0] == 'd'){
floor[r][c] = 0;
floor[r+1][c] = 0;
c+=1;
floor[r][c] = 6;
floor[r +1][c] = 6;
}
break;
}
}
system("pause");
}
void stamp( int floor [][y]){
for(i = 0; i < x; i++){
for(j = 0; j < y; j++){
if(floor[i][j] == 6){
printf(" * ");
}
else{
printf(" ");
}
}
printf("\n");
}
printf("\n");
}
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2791
|
Beh, la funzione che dovrebbe stampare qualcosa è stamp ma non la richiami mai...
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Oct 2011
Messaggi: 9
|
Se la funzione la richiamo nello switch(dopo aver effetuato lo spostamento), mi stampa, sopra due oggetti che si spostano e mooolto più sotto un oggetto che sta sempre fermo e che viene stampato ogni volta che premo il tasto per lo spostamento. Mentre quelli sopra si, si spostano, ma non vengono visualizzati a meno che non si scorri verso l'alto
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:53.




















