RISOLTO Movimento C

Stato
Discussione chiusa ad ulteriori risposte.

Dradkol

Eretico
Utente Èlite
5,064
4,363
CPU
Intel core i7 11700KF 8 core/ 16 thread 4.6Ghz all core
Dissipatore
Arctic Liquid freezer II 240mm Argb
Scheda Madre
Asus TUF Gaming z590 Plus wifi
HDD
NVMe M.2 Gen4 Crucial P5 Plus 1TB + NVMe M.2 Gen3 Sabrent 256GB / +SSD Crucial bx500 256GB
RAM
Kingston Fury Beast 32Gb (2X16GB) 3200Mhz CL16
GPU
Asus TUF Rtx 3080 12GB Gaming OC 900mv/1865mhz
Audio
HyperX Cloud II + Logitech Z313
Monitor
Xiaomi Mi 34° WQHD 144hz + LG UltraGear 32GN650 32° QHD, 165hz
PSU
Corsair RM850x
Case
Cooler Master TD500 Mesh Argb
OS
Windows 11
Salve a tutti. Sono disperato sto lavorando a questo progetto da circa 5 mesi ed in pratica lo avrei anche finito tutto ma mi blocca un passaggio, il movimento.
Ci tengo a precisare che non sono uno di quelli che vuole che gli si facciano i programmi ecc voglio solo consigli utili e imparare.
LA traccia non vi serve in quanto non voglio che mi facciate il programma, sappiate solo che il mio problema e' muovere il "o" dentro il campo. Le ho provate tutte aiutatemi. Il programma e' il seguente. Come potete vedere il programma e' perfettamente funzionante tranne per il fatto che "o" il player rimane nella stessa posizione di prima.
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


void genera_campo(char campo[10][10],int pos_x,int pos_y);
void visualizza_campo(char campo[10][10]);
void movimento_player(char campo[10][10],int pos_x,int pos_y,int direzione);

int main()
{

    char campo[10][10];
    int move;
    int pos_x;
    int pos_y;
    int direzione;

    srand(time(NULL));



genera_campo(campo,pos_x,pos_y);
visualizza_campo(campo);
movimento_player(campo,pos_x,pos_y,direzione);
visualizza_campo(campo);



    return 0;
}

void genera_campo(char campo[10][10],int pos_x, int pos_y)
{
  
    int i,j,k=0;

    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            campo[i][j]='*';
        }
    }

  
    while(k<1)
    {
        i=rand()%10; // coordinate riga del player
        j=rand()%10; // coordinate colonna del player
        pos_x=i;
        pos_y=j;
        if(campo[i][j]=='*')
           {
              campo[i][j]='o';
                k++;
           }
    }
}

void visualizza_campo(char campo[10][10])
{
    int i,j;

    for(i=0;i<10;i++) // stampo il campo
    {
        for(j=0;j<10;j++)
        {
            printf("%c ",campo[i][j]);
        }
        printf("\n");
    }
}

void movimento_player(char campo[10][10],int pos_x,int pos_y,int direzione)
{
    /
    printf("\nIn che direzione vorresti muoverti: ?\n");
    printf("\npremi 1 per andare su, 2 per andare giu', 3 per andare a destra e 4 per andare a sinistra: \n");
    scanf("%d",&direzione);

   
    if(direzione<1 || direzione>4)
    {
        printf("\nErrore digita un numero compreso tra 1 e 4\n");
        return;
    }

  
    switch (direzione)
    {
    case 1:
        pos_x--;
        break;
    case 2:
        pos_x++;
        break;
    case 3:
        pos_y++;
        break;
    case 4:
        pos_y--;
        break;
    }
}


Come potete vedere il programma e' perfettamente funzionante tranne per il fatto che "o" il player rimane nella stessa posizione di prima. AIUTO !
 
Ultima modifica:

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
A questo punto, nonostante le premesse, potevi postare tutto il codice in modo canonico (cioè dentro i tag "code") così almeno sarebbe stato più caro, magari con commenti inseriti invece che le tue riflessioni mescolate!

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Dradkol

Eretico
Utente Èlite
5,064
4,363
CPU
Intel core i7 11700KF 8 core/ 16 thread 4.6Ghz all core
Dissipatore
Arctic Liquid freezer II 240mm Argb
Scheda Madre
Asus TUF Gaming z590 Plus wifi
HDD
NVMe M.2 Gen4 Crucial P5 Plus 1TB + NVMe M.2 Gen3 Sabrent 256GB / +SSD Crucial bx500 256GB
RAM
Kingston Fury Beast 32Gb (2X16GB) 3200Mhz CL16
GPU
Asus TUF Rtx 3080 12GB Gaming OC 900mv/1865mhz
Audio
HyperX Cloud II + Logitech Z313
Monitor
Xiaomi Mi 34° WQHD 144hz + LG UltraGear 32GN650 32° QHD, 165hz
PSU
Corsair RM850x
Case
Cooler Master TD500 Mesh Argb
OS
Windows 11
A questo punto, nonostante le premesse, potevi postare tutto il codice in modo canonico (cioè dentro i tag "code") così almeno sarebbe stato più caro, magari con commenti inseriti invece che le tue riflessioni mescolate!

Inviato dal mio Nexus 5 utilizzando Tapatalk

Si hai ragione, ma non hai consigli su come posso risolvere il mio problema ?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Ci lavori da 5 mesi...?
Come ti è già stato detto, usa almeno il tag CODE. :)
Inoltre quando si espone un problema si danno tutti i dettagli, mostrando le parti di codice interessate. In questo modo è necessario leggere tutto solo per comprendere il contesto, senza tuttavia capire nemmeno quale sia esattamente il problema.
Cosa non va? Sicuramente da "movimento_player", non puoi aspettarti movimenti del player dopo incrementi/decrementi, in quanto quelle variabili esistono solo localmente in quella funzione.
 

Dradkol

Eretico
Utente Èlite
5,064
4,363
CPU
Intel core i7 11700KF 8 core/ 16 thread 4.6Ghz all core
Dissipatore
Arctic Liquid freezer II 240mm Argb
Scheda Madre
Asus TUF Gaming z590 Plus wifi
HDD
NVMe M.2 Gen4 Crucial P5 Plus 1TB + NVMe M.2 Gen3 Sabrent 256GB / +SSD Crucial bx500 256GB
RAM
Kingston Fury Beast 32Gb (2X16GB) 3200Mhz CL16
GPU
Asus TUF Rtx 3080 12GB Gaming OC 900mv/1865mhz
Audio
HyperX Cloud II + Logitech Z313
Monitor
Xiaomi Mi 34° WQHD 144hz + LG UltraGear 32GN650 32° QHD, 165hz
PSU
Corsair RM850x
Case
Cooler Master TD500 Mesh Argb
OS
Windows 11
Ci lavori da 5 mesi...?
Come ti è già stato detto, usa almeno il tag CODE. :)
Inoltre quando si espone un problema si danno tutti i dettagli, mostrando le parti di codice interessate. In questo modo è necessario leggere tutto solo per comprendere il contesto, senza tuttavia capire nemmeno quale sia esattamente il problema.
Cosa non va? Sicuramente da "movimento_player", non puoi aspettarti movimenti del player dopo incrementi/decrementi, in quanto quelle variabili esistono solo localmente in quella funzione.

Capisco e mi dispiace molto ma non saprei come usare il tag code. Scusate la mia ignoranza in materia :( mi piacerebbe capire come fare.
Si 5 mesi tra prendi e molla ho finito tutto il programma, ho generato le buche vincenti, le buche perdenti e le trappole nel campo. Ho fatto in modo che quando il player tocca il limite del campo viene rimesso in modo random nel campo nello stesso lato dove era uscito, ho creato il loop per i 50 tentativi e anche come da traccia ad ogni lancio del giocatore c'è un 20% di possibilità che il player invece di spostarsi nella direzione indicata si sposta in un altra delle quattro direzioni casuali ecc. Ho studiato e visto tantissime guide ma nessuna spiega come creare un gioco e quindi eccomi qui bloccato con il movimento. Penso che mi sto perdendo in un bicchiere d'acqua ma senza un piccolo aiuto penso di annegarci in quel bicchiere.
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed

Dradkol

Eretico
Utente Èlite
5,064
4,363
CPU
Intel core i7 11700KF 8 core/ 16 thread 4.6Ghz all core
Dissipatore
Arctic Liquid freezer II 240mm Argb
Scheda Madre
Asus TUF Gaming z590 Plus wifi
HDD
NVMe M.2 Gen4 Crucial P5 Plus 1TB + NVMe M.2 Gen3 Sabrent 256GB / +SSD Crucial bx500 256GB
RAM
Kingston Fury Beast 32Gb (2X16GB) 3200Mhz CL16
GPU
Asus TUF Rtx 3080 12GB Gaming OC 900mv/1865mhz
Audio
HyperX Cloud II + Logitech Z313
Monitor
Xiaomi Mi 34° WQHD 144hz + LG UltraGear 32GN650 32° QHD, 165hz
PSU
Corsair RM850x
Case
Cooler Master TD500 Mesh Argb
OS
Windows 11
E' un normalissimo tag BBCode: https://www.tomshw.it/forum/threads...ggere-prima-di-creare-una-discussione.597452/

Tornando al problema: dici che dopo "movimento_player", il giocatore non si muove. E' più chiaro perchè non si muove? E cosa non ti torna, nel caso?
Intanto grazie mille per la spiegazione del tag code anche se mi modifica leggermente il codice mi aggiunge questo [/I][/I][/I][/I]
e che io non ho inserito.
Tornando al programma una volta avviato il programma stampa a video il campo con il player che sarebbe "o" e viene chiesto all'utente di inserire una delle quattro direzioni. Una volta inserito una direzione stampa di nuovo il campo ( come richiesto dalla traccia ) ma il player "o" rimane nella stessa posizione di prima. Ho provato a salvare le posizioni nelle variabili pos_x e pos_y ma niente.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Ricopia il sorgente originale, cancella quello attuale, ed incolla. Dovresti risolvere. Poi puoi anche specificare il linguaggio volendo, così la sintassi risulterà evidenziata.

Comunque è normale non ci siano movimenti, le variabili sono passate per valore; viene fatta una copia del contenuto, e passata alla funzione. Se ti servono i nuovi valori, hai alcune strade: ad esempio facendo tornare un tipo composto (una struttura), oppure passando quei parametri per riferimento. In questo ultimo caso viene passato l'indirizzo della variabile, e non il suo contenuto.
 
  • Mi piace
Reazioni: Dradkol

Dradkol

Eretico
Utente Èlite
5,064
4,363
CPU
Intel core i7 11700KF 8 core/ 16 thread 4.6Ghz all core
Dissipatore
Arctic Liquid freezer II 240mm Argb
Scheda Madre
Asus TUF Gaming z590 Plus wifi
HDD
NVMe M.2 Gen4 Crucial P5 Plus 1TB + NVMe M.2 Gen3 Sabrent 256GB / +SSD Crucial bx500 256GB
RAM
Kingston Fury Beast 32Gb (2X16GB) 3200Mhz CL16
GPU
Asus TUF Rtx 3080 12GB Gaming OC 900mv/1865mhz
Audio
HyperX Cloud II + Logitech Z313
Monitor
Xiaomi Mi 34° WQHD 144hz + LG UltraGear 32GN650 32° QHD, 165hz
PSU
Corsair RM850x
Case
Cooler Master TD500 Mesh Argb
OS
Windows 11
Ricopia il sorgente originale, cancella quello attuale, ed incolla. Dovresti risolvere. Poi puoi anche specificare il linguaggio volendo, così la sintassi risulterà evidenziata.

Comunque è normale non ci siano movimenti, le variabili sono passate per valore; viene fatta una copia del contenuto, e passata alla funzione. Se ti servono i nuovi valori, hai alcune strade: ad esempio facendo tornare un tipo composto (una struttura), oppure passando quei parametri per riferimento. In questo ultimo caso viene passato l'indirizzo della variabile, e non il suo contenuto.

Grazie risolto con il tag code. Nel caso della struttura ci ho provato ma avevo problemi nel usarla nella funzione. Per quanto riguarda passarli per riferimento ti riferisci ai puntatori ?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Si, esatto.
Diventerà quindi:

C:
void movimento_player(char campo[10][10],int *pos_x,int *pos_y,int direzione)

e la chiamata avverà quindi così:

C:
movimento_player(campo,&pos_x,&pos_y,direzione);
 
  • Mi piace
Reazioni: Dradkol

Dradkol

Eretico
Utente Èlite
5,064
4,363
CPU
Intel core i7 11700KF 8 core/ 16 thread 4.6Ghz all core
Dissipatore
Arctic Liquid freezer II 240mm Argb
Scheda Madre
Asus TUF Gaming z590 Plus wifi
HDD
NVMe M.2 Gen4 Crucial P5 Plus 1TB + NVMe M.2 Gen3 Sabrent 256GB / +SSD Crucial bx500 256GB
RAM
Kingston Fury Beast 32Gb (2X16GB) 3200Mhz CL16
GPU
Asus TUF Rtx 3080 12GB Gaming OC 900mv/1865mhz
Audio
HyperX Cloud II + Logitech Z313
Monitor
Xiaomi Mi 34° WQHD 144hz + LG UltraGear 32GN650 32° QHD, 165hz
PSU
Corsair RM850x
Case
Cooler Master TD500 Mesh Argb
OS
Windows 11
Si, esatto.
Diventerà quindi:

C:
void movimento_player(char campo[10][10],int *pos_x,int *pos_y,int direzione)

e la chiamata avverà quindi così:

C:
movimento_player(campo,&pos_x,&pos_y,direzione);

Perché non ci avevo pensato :cav: Intanto ti ringrazio di cuore dico sul serio sei stato gentilissimo e hai avuto molta pazienza. Grazie ora provo e faccio sapere se funziona.
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Scusa l'ignoranza, ma non capisco il senso della variabile k nella procedura genera_campo()

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Dradkol

Eretico
Utente Èlite
5,064
4,363
CPU
Intel core i7 11700KF 8 core/ 16 thread 4.6Ghz all core
Dissipatore
Arctic Liquid freezer II 240mm Argb
Scheda Madre
Asus TUF Gaming z590 Plus wifi
HDD
NVMe M.2 Gen4 Crucial P5 Plus 1TB + NVMe M.2 Gen3 Sabrent 256GB / +SSD Crucial bx500 256GB
RAM
Kingston Fury Beast 32Gb (2X16GB) 3200Mhz CL16
GPU
Asus TUF Rtx 3080 12GB Gaming OC 900mv/1865mhz
Audio
HyperX Cloud II + Logitech Z313
Monitor
Xiaomi Mi 34° WQHD 144hz + LG UltraGear 32GN650 32° QHD, 165hz
PSU
Corsair RM850x
Case
Cooler Master TD500 Mesh Argb
OS
Windows 11
Scusa l'ignoranza, ma non capisco il senso della variabile k nella procedura genera_campo()

Inviato dal mio Nexus 5 utilizzando Tapatalk
L'ho inserita per il cliclo while. Il campo e 10x10 ed e' formato da '*' campo[ i ][ j ] sempre in quel campo deve creare una sola volta un 'o' che sarebbe il player e per far ciò ho bisogno della k=0 e incrementarla. In poche parole mi serve per inserire una sola volta nel campo il player. Sono un disastro a spiegare spero tu abbia capito.
 

Dradkol

Eretico
Utente Èlite
5,064
4,363
CPU
Intel core i7 11700KF 8 core/ 16 thread 4.6Ghz all core
Dissipatore
Arctic Liquid freezer II 240mm Argb
Scheda Madre
Asus TUF Gaming z590 Plus wifi
HDD
NVMe M.2 Gen4 Crucial P5 Plus 1TB + NVMe M.2 Gen3 Sabrent 256GB / +SSD Crucial bx500 256GB
RAM
Kingston Fury Beast 32Gb (2X16GB) 3200Mhz CL16
GPU
Asus TUF Rtx 3080 12GB Gaming OC 900mv/1865mhz
Audio
HyperX Cloud II + Logitech Z313
Monitor
Xiaomi Mi 34° WQHD 144hz + LG UltraGear 32GN650 32° QHD, 165hz
PSU
Corsair RM850x
Case
Cooler Master TD500 Mesh Argb
OS
Windows 11
Niente da fare ho modificato la funzione movimento e ho aggiunto i puntatori ma nada. Forse c'è qualcosa di sbagliato nel codice che non riesco a vedere. Penso che possa essere un problema nel main. In quanto dopo la chiamata della funzione movimento richiamo visualizza_campo ma forse dovrei modificarla o richiamare di nuovo la funzione genera_campo con i dati aggiornati. :muro:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void genera_campo(char campo[10][10],int pos_x,int pos_y);
void visualizza_campo(char campo[10][10]);
void movimento_player(char campo[10][10],int *pos_x,int *pos_y,int direzione);


int main()
{

    char campo[10][10];
    int move;
    int pos_x;
    int pos_y;
    int direzione;

    srand(time(NULL));



genera_campo(campo,pos_x,pos_y);
visualizza_campo(campo);
movimento_player(campo,&pos_x,&pos_y,direzione);

visualizza_campo(campo);



    return 0;
}

void genera_campo(char campo[10][10],int pos_x, int pos_y)
{

    int i,j,k=0;

    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            campo[i][j]='*';
        }
    }


    {
        while(k<1){
        i=rand()%10;
        j=rand()%10;
        pos_x=i;
        pos_y=j;
        if(campo[i][j]=='*')
           {
              campo[i][j]='o';
                k++;
           }
    }
}

void visualizza_campo(char campo[10][10])
{
    int i,j;

    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            printf("%c ",campo[i][j]);
        }
        printf("\n");
    }
}

void movimento_player(char campo[10][10],int *pos_x,int *pos_y,int direzione)
{

    printf("\nIn che direzione vorresti muoverti: ?\n");
    printf("\npremi 1 per andare su, 2 per andare giu', 3 per andare a destra e 4 per andare a sinistra: \n");
    scanf("%d",&direzione);


    if(direzione<1 || direzione>4)
    {
        printf("\nErrore digita un numero compreso tra 1 e 4\n");
        return;
    }


    switch (direzione)
    {
    case 1:
        pos_x--;
        break;
    case 2:
        pos_x++;
        break;
    case 3:
        pos_y++;
        break;
    case 4:
        pos_y--;
        break;
    }
}
 
Ultima modifica:

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Bhe, il campo l'hai generato con i valori vecchi... quindi devi per forza riposizionare i nuovi elementi. Puoi anche pensare ad una logica differente: la funzione movimento sposta il giocatore direttamente. Così non rigeneri tutto per 1 sola mossa, ma effettui solo lo spostamento necessario.

Comunque si, ci sono un pò di aspetti che magari andrebbero rivisti. Mi associo all'osservazione di rctimelines. Non avendo nessun ciclo, è del tutto inutile quel controllo. Se richiami questa funzione anche; quando setti un 'o' esci direttamente, non servono altri controlli. Se la posizione (i,j) è già occupata dovrai - immagino - generare una nuova posizione valida.
A che servono poi quelle parentesi graffe in più?
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili