Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-06-2006, 21:03   #1
McGrady
Member
 
Iscritto dal: May 2006
Messaggi: 67
Programma in C: HELP!

Allora il programma è il seguente: Il programma deve simulare il gioco del Monopoli semplificato. Ho una lista di giocatori e ogni giocatore ha una lista di proprietà che possiede (ogni proprietà è caratterizzata dal nome della casella: es via torino, piazza dante) che è costituita dal nome della proprietà e dalla cifra in euro che dovrà essere corrisposta agli altri giocatori che capitassero in tale casella. Ho un'altra lista che costituisce il tabellone, ogni elemento della lista è una via o una piazza (es. corso_magellano). Tutti i giocatori si trovano inizialmente nella prima casella e a turno si simula il lancio di due dadi ( generare un numero casuale tra 1 e 12) e lo si fa avanzare nella casella corrispondente eventualmente pagando la tassa dovuta al proprietario ( se c'è un proprietario); infine si stampa a video l'operazione compiuta. Un giocatore che finisce i soldi viene eliminato, vince l'ultimo giocatore rimasto.

Ovviamente il programma è lungo, però vorrei che voi mi aiutaste a risolvere il problema, soprattutto la parte riguardante la simulazione vera e propria, ovvero dal lancio dei dadi in poi. Ogni suggerimento non può che aiutarmi.
McGrady è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2006, 21:19   #2
ianaz
Senior Member
 
L'Avatar di ianaz
 
Iscritto dal: Jan 2005
Città: London, United Kingdom
Messaggi: 959
Mi spiace, non posso aiutarti...
però, una curiosità...: lo vuoi fare grafico oppure a "schermo nero"?
__________________
zattix
ianaz è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2006, 21:36   #3
McGrady
Member
 
Iscritto dal: May 2006
Messaggi: 67
Scusate ma non sono stato molto chiaro:
Il tabellone è rappresentato dalla seguente lista ad es.
Partenza
Parco_della_vittoria
corso_magellano
piazza_giulio_cesare
.....
ecc......


I partecipanti sono messi in una lista e ogni elemento della lista ha il campo nome giocatore e capitale, per ogni giocatore c'è una lista di proprietà(ogni proprietà è una casella) ogni proprietà ha un prezzo che deve essere pagato da chi capita in questa casella se non è sua, ovviamente deve pagare al proprietario. Sul video devo semplicemente comparire questo

Es.
Mario tira dadi:5
Mario arriva in corso_magellano e paga Euro 5.32 a Gustavo
soldi rimanenti : euro 24.91
e così via per tutti i giocatori



Niente di grafico la mia struttura dati sono semplicemente delle LISTE
McGrady è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 09:02   #4
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da McGrady
Allora il programma è il seguente: Il programma deve simulare il gioco del Monopoli semplificato. Ho una lista di giocatori e ogni giocatore ha una lista di proprietà che possiede (ogni proprietà è caratterizzata dal nome della casella: es via torino, piazza dante) che è costituita dal nome della proprietà e dalla cifra in euro che dovrà essere corrisposta agli altri giocatori che capitassero in tale casella. Ho un'altra lista che costituisce il tabellone, ogni elemento della lista è una via o una piazza (es. corso_magellano). Tutti i giocatori si trovano inizialmente nella prima casella e a turno si simula il lancio di due dadi ( generare un numero casuale tra 1 e 12) e lo si fa avanzare nella casella corrispondente eventualmente pagando la tassa dovuta al proprietario ( se c'è un proprietario); infine si stampa a video l'operazione compiuta. Un giocatore che finisce i soldi viene eliminato, vince l'ultimo giocatore rimasto.

Ovviamente il programma è lungo, però vorrei che voi mi aiutaste a risolvere il problema, soprattutto la parte riguardante la simulazione vera e propria, ovvero dal lancio dei dadi in poi. Ogni suggerimento non può che aiutarmi.
Stai praticamente chiedendo di farti il programma
Ma almeno iniziarlo no ? un'idea uno spunto
hai messo il linguaggio e il problema ...

Vabbé, io t'ho fatto il lancio dadi ...

Codice:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

/*                                        *\
   RITORNA LA SOMMA DI 2 NUMERI TRA 1 E 6
   SI POTREBBE FARE ANCHE:
\*                                        */
int TiraDadi()
{
   return (rand() % 6 + 1) + // DADO 1
          (rand() % 6 + 1);  // DADO 2
}


/*                            *\
   TESTA LA FUNZIONE TiraDadi
\*                            */
int main( int argc, char *argv[] )
{
   int i;

   /*
    * srand VA CHIAMATA PER INIZIALIZZARE IL GENERATORE RANDOM
    * GLI PASSO getpid() PER AVERE UAN SEQUENZA DIVERSA OGNI VOLTA
    */
   srand((unsigned int)getpid());

   /* TESTA 100 LANCI DI DADI. OGNI 10 VA A CAPO */
   for ( i = 1; i <= 100; i++ )
      printf( "%3i %c", TiraDadi(), (i % 10) ? ' ' : '\n' );

   putchar('\n');
}
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 11:50   #5
McGrady
Member
 
Iscritto dal: May 2006
Messaggi: 67
Non sto chidendo di farmi il programma vorrei solo qualche suggerimento. Il lancio dei dadi mi serve qualcosa molto piu semplice:
tirata = rand() % 12 + 1;che mi genera numeri casuali tra 1 e 12.
Il mio vero problema è implementare il fatto dello spostamento dei giocatori nel tabellone. Avevo pensato di mettere nel campo struct di ogni giocatore una variabile int posizione che mi tiene conto della posizione del giocatore...
McGrady è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 12:05   #6
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da McGrady
Non sto chidendo di farmi il programma vorrei solo qualche suggerimento. Il lancio dei dadi mi serve qualcosa molto piu semplice:
tirata = rand() % 12 + 1;che mi genera numeri casuali tra 1 e 12.
Il mio vero problema è implementare il fatto dello spostamento dei giocatori nel tabellone. Avevo pensato di mettere nel campo struct di ogni giocatore una variabile int posizione che mi tiene conto della posizione del giocatore...
guarda che la mia mica é complicata ...

Codice:
return (rand() % 6 + 1) + // DADO 1
       (rand() % 6 + 1);  // DADO 2
il resto é commenti e main di test

Comunque mi sembra la cosa piú veloce e semplice da fare quella del
campo "posizione".
Immagina il campo del monopoli come un array di n posizioni e il resto
viene da se
Il realtá il campo é "circolare", diciamo una matrice nella quale
usi solo il perimetro, ma sarebbe assurdo e da calci nelle palle
usare una matrice per la posizione

Ti consiglio di disegnare il tutto e lavorare molto su carta
Quando serve fai un fischio
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 12:12   #7
davide87
Senior Member
 
L'Avatar di davide87
 
Iscritto dal: Dec 2004
Città: Pomezia-Roma Mezzo: STGT ( Sola e Tacchi Gran Turismo )
Messaggi: 2646
Quote:
Originariamente inviato da McGrady
Non sto chidendo di farmi il programma vorrei solo qualche suggerimento. Il lancio dei dadi mi serve qualcosa molto piu semplice:
tirata = rand() % 12 + 1;che mi genera numeri casuali tra 1 e 12.
Il mio vero problema è implementare il fatto dello spostamento dei giocatori nel tabellone. Avevo pensato di mettere nel campo struct di ogni giocatore una variabile int posizione che mi tiene conto della posizione del giocatore...
Randomize();
tirata=random(12)+1;

cosi.?
davide87 è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 12:19   #8
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
è meglio la tirata con i due da sei, perche ci sono le stessed probabilita che in un lancio di dadi nella realta.
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 12:21   #9
McGrady
Member
 
Iscritto dal: May 2006
Messaggi: 67
Il tabellone del monopoli devo per forza farlo sottoforma di lista circolare. Il problema è come faccio a chiudere la lista?? Ovvero l'ultimo elemento punta al primo?

DOmanda 2:
while(nome_casella != '#' )
dove nome_casella è una stringa mi da problemi......
In pratica i giocatori sono così memorizzati in un file

Mario 30.23
parco_della_Vittoria 10.23
viale_dei_giardini 8.32
#
Pippo
.............
..........

In pratica ogni giocatore è separato da un altro dal simbolo #
30.23 sta a indicare il capitale di mario. sotto ci sono tutte le proprietà di mario con i relativi prezzi che ogni giocatore deve pagargli nel caso ci finisse. NOme_casella è appunto il nome della proprietà (che rappresenta appunto una casella). Quel while però non me lo fa passare.

Ultima modifica di McGrady : 27-06-2006 alle 12:30.
McGrady è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 12:26   #10
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da davide87)
Randomize();
Randomize() ???
forse randomize() con Borland ?

Quote:
Originariamente inviato da davide87)
tirata=random(12)+1;
ocio che cosí ti puó uscire 1. Usi un dado che ha 0 ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 12:31   #11
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da McGrady
Il tabellone del monopoli devo per forza farlo sottoforma di lista circolare. Il problema è come faccio a chiudere la lista?? Ovvero l'ultimo elemento punta al primo?
per forza ???

allora usa la classica struttura con gli "iteratori"

Codice:
typedef struct POS
{
   int         Posizione;
   ... 
   struct POS *pNext;
   struct POS *pPrev;
} Pos;
poi la chiudi assegnando a pNext dell'ultima il punt della prima
e a pPrev della prima il punt dell'ultima
vado a magná
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 12:34   #12
davide87
Senior Member
 
L'Avatar di davide87
 
Iscritto dal: Dec 2004
Città: Pomezia-Roma Mezzo: STGT ( Sola e Tacchi Gran Turismo )
Messaggi: 2646
Quote:
Originariamente inviato da trallallero
Randomize() ???
forse randomize() con Borland ?


ocio che cosí ti puó uscire 1. Usi un dado che ha 0 ?
ramdomize(); perchè io che ho scritto..?
ah..è vero sono due dadi..
quindi:
tirata1=random(6)+1;
tirata2=random(6)+1;
tirata=tirara1+tirara2;
davide87 è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 12:38   #13
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
potresti anche avere una lista circolare come tabellone, poi ad ogni utente nel compo posizione metti il puntatore alla casella interessata, su ogni casella (quindi su ogni elemento della lista) segnali proprietario ed eventuali edifici.
in pratica lanci i dadi
ti muovi e aggiorni la posizione
controlli se la casella ha un proprietario e paghi, altrimenti chiedi cosa fare
__________________
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 12:50   #14
McGrady
Member
 
Iscritto dal: May 2006
Messaggi: 67
In pratica ho difficolta uhna volta lanciati i dadi a trovare una corrispondenza tra il numero del dado e la posizione nel tabellone.

Ad es Mario tira dadi : 8

posizione_mario=posizione_mario + 8; /* va avanti di 8 */
dopodichè come faccio a collegare la posizione attuale di marco con il nome della casella del tabellone?
McGrady è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 13:02   #15
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
non puoi farlo in C++ e usare l'OOP? sarebbe 10000 volte + facile...
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 13:06   #16
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da davide87
ramdomize(); perchè io che ho scritto..?
devi stare attento alla portabilitá delle funzioni.
Se non ricordo male la Borland spiega bene nel manuale
se la funzione é ANSI e su che macchine funge.
randomize() su Sun e linux non c'é
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 13:40   #17
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da AngeL)
non puoi farlo in C++ e usare l'OOP? sarebbe 10000 volte + facile...
perché ? se ha problemi a muoversi nel tabellone
non é che il C++ glielo risolve
Puó fare il metodo
Codice:
void MuoviPosizione(int Pos)
ma qualcosa ci deve scrivere dentro

Quote:
Originariamente inviato da McGrady
In pratica ho difficolta uhna volta lanciati i dadi a trovare una corrispondenza tra il numero del dado e la posizione nel tabellone.

Ad es Mario tira dadi : 8

posizione_mario=posizione_mario + 8; /* va avanti di 8 */
dopodichè come faccio a collegare la posizione attuale di marco con il nome della casella del tabellone?
non c'é un unico modo per farlo.
Dipende da come hai impostato la cosa.
Mario che tipo di oggetto é ? la posizione ?
sono strutture ? il tabellone ?
troppe incognite
potresti fare cosí
Codice:
typedef struct POS
{
   int           Posizione;
   ... 
   struct INFO  *pInfo;
   struct POS   *pNext;
   struct POS   *pPrev;
} Pos;
dove INFO é la struttura che contiene le info
su quella posizione, tipo il nome della via,
il costo, il proprietario etc ...
tanto per dirne una
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 14:44   #18
McGrady
Member
 
Iscritto dal: May 2006
Messaggi: 67
Allora Mario è il giocatore, "posizione" è il campo della struct di ogni giocatore, il tabellone è una lista di stringhe_

PARTENZA=>VIA_DANTE=>CORSO_TORINO=>.......ECC...

Se sono all'inizio e mi esce 2 con i dadi, MArio dovrà andare nella posizione 2, che nel mio esempio è CORSO_TORINO ora io dovrei vedere se Cordo Torino è proprietà di qualche altro giocatore e in tal caso pagare
McGrady è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 19:34   #19
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
Quote:
Originariamente inviato da McGrady
Allora Mario è il giocatore, "posizione" è il campo della struct di ogni giocatore, il tabellone è una lista di stringhe_

PARTENZA=>VIA_DANTE=>CORSO_TORINO=>.......ECC...

Se sono all'inizio e mi esce 2 con i dadi, MArio dovrà andare nella posizione 2, che nel mio esempio è CORSO_TORINO ora io dovrei vedere se Cordo Torino è proprietà di qualche altro giocatore e in tal caso pagare
ma non tornerebbe + comodo usando 1 array?
in fondo hai un numero fisso di caselle e in questo modo salvi posizione corrente e hai la posizione dopo il lancio con una semplice somma
__________________
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 10:04   #20
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da trallallero
Codice:
int TiraDadi()
{
   return (rand() % 6 + 1) + // DADO 1
          (rand() % 6 + 1);  // DADO 2
}
non dovrebbe essere ((rand() % 6)+1)+((rand() % 6)+1); ?
quello che hai fatto tu calcola il random con range 6+1, cioe 7 (credo )

quali header servono per usare rand() ?
AngeL) è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
Cloudflare si scusa e spiega cos'è...
Obbligati ad acquistare una scheda madre...
GTA VI su PC? La data non c'è, ma...
Monopattini elettrici, a un anno dal dec...
Tesla Robotaxi, autista di sicurezza si ...
Samsung Galaxy S26: svelate le combinazi...
Microsoft Ignite: arriva Edge for Busine...
OPPO e Lamine Yamal uniscono sport e tec...
Microsoft, NVIDIA e Anthropic siglano un...
SpaceX potrebbe comunicare alla NASA rit...
Scoperte cavità sotterranee scava...
OnePlus anticipa l'arrivo di due nuovi p...
DJI lancia Osmo Action 6: la prima actio...
NASA: conferenza stampa sulla cometa int...
Ex CEO di TSMC passa a Intel: aperta un'...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v