Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - sposta lungo matrice
Forum - C/C++ - sposta lungo matrice

Avatar
frog87 (Normal User)
Newbie


Messaggi: 7
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 17:04
Lunedì, 06/04/2009
ho una matrice 5x5 e in una posizione A[4][2]='X'  vorre capire come posso spostarlo a destra e sinistra muovendo 1 e 2 lungo l' ultima posizione della riga solo muovendo 1 e 2.
Per farvi capire meglio devo ottenere lo stesso movimento del gioco space invaders. Per orala X  riesco solo a spostarla a destra o sinista vorrei ottenere un effetto continuo del movimento .

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:06
Lunedì, 06/04/2009
ho provato a scrivere questo sorgente(fatto in fretta, da sistemare un po'):

Codice sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<time.h>
  3. #define COLONNE 5
  4. #define RIGHE 5
  5.  
  6. int main(){
  7.    
  8.     char array[ RIGHE ][ COLONNE ] = {    { ' ', ' ', ' ', ' ', ' ' }, /*riga1*/
  9.                                           { ' ', ' ', ' ', ' ', ' ' }, /*riga2*/
  10.                                           { ' ', ' ', ' ', ' ', ' ' }, /*riga3*/
  11.                                           { ' ', ' ', ' ', ' ', ' ' }, /*riga4*/
  12.                                        { ' ', ' ', ' ', ' ', ' ' } }; /*riga5*/
  13.     char *arrayPtr = &array[ 4 ][ 2 ];
  14.    
  15.     int x = 4; /*righe*/
  16.     int y = 2; /*colonne*/
  17.    
  18.     int random;
  19.    
  20.     srand( time( NULL ) );
  21.    
  22.     printf("           Riga     Colonna\n\n");
  23.    
  24.     while( x <= 5 && y <= 5 ){
  25.            
  26.            arrayPtr = &array[ x ][ y ];
  27.            
  28.            arrayPtr = 'X';
  29.            
  30.            printf("%c = array  [ %d ]    [ %d ]\n\n", arrayPtr, x, y);
  31.            
  32.            arrayPtr = ' ';
  33.            
  34.            random = 1 + rand() % 2;
  35.            
  36.            x += random;
  37.            
  38.              if( x >= 6 ){
  39.                  x = 0;
  40.                  y += 1;
  41.                  }
  42.              
  43.              }
  44.              
  45.     while( x >= 0 && y >= 0 ){
  46.            
  47.            arrayPtr = &array[ x ][ y ];
  48.            
  49.            arrayPtr = 'X';
  50.            
  51.            printf("%c = array  [ %d ]    [ %d ]\n\n", arrayPtr, x, y);
  52.            
  53.            arrayPtr = ' ';
  54.            
  55.            random = 1 + rand() % 2;
  56.            
  57.            x -= random;
  58.            
  59.              if( x <= 0 ){
  60.                  x = 5;
  61.                  y -= 1;
  62.                  }
  63.              }
  64.  
  65. system("pause");
  66. }


PM Quote
Avatar
frog87 (Normal User)
Newbie


Messaggi: 7
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 14:00
Martedì, 07/04/2009
il mio problem pero' è spostare un lettera di indice A[4][2]='X' con i tasti 1 e 2 tipo space invaders con le freccette... in modo da sposarmi lungo la la riga della matrice . non so se mi hai compreso .

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:04
Martedì, 07/04/2009
secondo me ragionando ci puoi arrivare ;)
il tuo problema è spostare una x premendo uno e due.
Chiediti cosa devi fare:
-catturare la pressione di uno di due o di qualsiasi altro tasto
   come lo risolvo? con una scanf o una getchar ;)

-decidere se spostare la tua x a destra o a sinistra
   come lo risolvo? con un if decidi in che direzione spostarla

-spostare la x
   come lo risolvo? scrivi la x nella cella dove la vuoi mettere, e metti un blank nella cella corrente ;)

PM Quote
Avatar
frog87 (Normal User)
Newbie


Messaggi: 7
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 10:08
Mercoledì, 08/04/2009
si giusto .. pero' mi ritrovo a qualcosa di poco elestico nel senso che la X si sposta a destra e sinistra io vorrei un movimento che con 1 o 2 si sposti di continuo è qui che sorgeil problema... come posso creare questo movimento continuo?

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 10:25
Mercoledì, 08/04/2009
secondo me finchè resti sul dos sarà dura riuscire a muovere la x fluidamente.
Riuscirai sempre a muoverla di uno spazio alla volta al massimo.
Però questa è solo una considerazione personale :P non ho prove di ciò che dico.
Se qualcuno ne sa qualcosa in più, attendiamo :P

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 13:21
Mercoledì, 08/04/2009
per un movimento fluido devi aggiungere qualche libreria grafica, con aggiunta quindi di object oriented

PM Quote
Avatar
frog87 (Normal User)
Newbie


Messaggi: 7
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 15:07
Mercoledì, 08/04/2009
secondo voi con qualche libreria grafica riesco a ottenere questo movimento ?

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 8:55
Giovedì, 09/04/2009
non ne ho mai usate ma penso che con openGL potresti riuscirci, forse anche con le DirectX

PM Quote