Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
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: 2647
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: 2647
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


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Robot aspirapolvere per tutte le tasche:...
Accedere alle mail di un lavoratore lice...
Amazon Haul scatenato: migliaia di prodo...
Amazon Seconda Mano rilancia: sconto ext...
Super prezzo Amazon per ECOVACS DEEBOT T...
NVIDIA Shield TV: dieci anni di aggiorna...
Le 10 offerte migliori su Amazon oggi, c...
Autostrade che 'pensano': l'AI arriva su...
AMD alza l'asticella: Zen 6 è la ...
Il satellite spia russo Olymp-1 si &egra...
Rocket Lab prosegue l'assemblaggio del n...
Il Wet Dress Rehearsal della missione Ar...
31,4 Tbps: Aisuru sfonda il suo stesso r...
Giocattoli AI, una falla espone oltre 50...
OPPO Reno15 in viaggio con Gaia Gozzi: i...
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: 10:53.


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