Technology [C++]Tetris, aiuto per la tesi

breakinlord

Ninja Skilled!
Arch@ngel ha scritto:
Comunque, per tornare On Topic, il tetris in C++ compila senza problemi.


Qui il risultato della compilazione.
ma a te parte? a me no, mi ha detto che mancavano le librerie msvcr100.dll e msvcp100.dll, le ho scaricare e registrate
ora mi da questo errore:
"Impossibile trovare il punto di ingresso
_invalid_parameter_noinfo_noreturn della procedura nella libreria di collegamento dinamico MSVCR100.dll"

Poi come hai fatto per ottenere l'exe? Non ho mai fatto c e c++ in vita mia quindi non vi stupite delle domande ignoranti.

mi sento un invalido...
 

breakinlord

Ninja Skilled!
Dunque per adesso mi da



4 errori
'__int64' does not name a type CPF.StandardTetris.STRandom.h /Tetris/source line 21 C/C++ Problem
'__int64' does not name a type CPF.StandardTetris.STRandom.h /Tetris/source line 25 C/C++ Problem
'__int64' does not name a type CPF.StandardTetris.STRandom.h /Tetris/source line 31 C/C++ Problem
'__int64' has not been declared CPF.StandardTetris.STRandom.h /Tetris/source line 27 C/C++ Problem


8 warning
ignoring #pragma warning CPF.StandardTetris.STDateTime.cpp /Tetris/source line 17 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STDateTime.h /Tetris/source line 12 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STFile.h /Tetris/source line 14 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STPieceSequence.h /Tetris/source line 17 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STStrategy.h /Tetris/source line 15 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STStrategyManager.h /Tetris/source line 18 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STStrategyRogerLLimaLaurentBercotSebastienBlondeelOnePiece1996.cpp /Tetris/source line 18 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STStrategyRogerLLimaLaurentBercotSebastienBlondeelOnePiece1996.h /Tetris/source line 18 C/C++ Problem



Edit: ho fatto un altro build, così, per i lulli, ed è spuntato un altro errore:


extra qualification 'CPF::StandardTetris::STConsole::' on member 'STConsole' CPF.StandardTetris.STConsole.h /Tetris/source line 33 C/C++ Problem
 

breakinlord

Ninja Skilled!
ogni volta che premo il dannato bottone "build" spuntano nuovi errori


sono veramente senza parole, non so che fare, non mi sento mai così inutile come quando non so fare cose che all'università che pago mi avrebbero dovuto insegnare :serio:
 

Samael

Ninja Skilled!
Sirion ha scritto:
Da non sottovalutare assolutamente la questione stilistica. Quando si lavora in gruppo è fondamentale per garantire unità al lavoro. La prima cosa che ho chiesto una volta introdotto al team di sviluppo dell'azienda che collabora con la nostra uni su un progetto di cui faccio parte son proprio le convenzioni adottate (anche perchè son un seguace delle metodologie agili).

Vena polemica su visual studio: come cazzo è possibile che per avere un aiuto intelligente che gestisca le convenzioni stilistiche bisogna comrpare un plugin (resharper) dal costo non indifferente (fa anche un sacco di cose utili però, in refactoring è un must) solo per avere ciò che per esempio eclipse ha già di base :(


le convenzioni stilistiche, indubbiamente fondamentali all'interno di un team, prescindono dall'ide che al più ti può offrire (e ti offre) solo la gestione automatica dei whitespace e dell'indentazione del codice (cose comunque utilissime)... Le politiche di naming, le regole per strutturare il codice e tutto il resto (necessariamente e giustamente) prescindono dall'ide e competono unicamente il team di sviluppo.


riguardo VS francamente non capisco, a suo tempo non ebbi bisogno di alcun plug-in


breakinlord ha scritto:
Dunque per adesso mi da



4 errori
'__int64' does not name a type CPF.StandardTetris.STRandom.h /Tetris/source line 21 C/C++ Problem
'__int64' does not name a type CPF.StandardTetris.STRandom.h /Tetris/source line 25 C/C++ Problem
'__int64' does not name a type CPF.StandardTetris.STRandom.h /Tetris/source line 31 C/C++ Problem
'__int64' has not been declared CPF.StandardTetris.STRandom.h /Tetris/source line 27 C/C++ Problem


a naso potrebbe essere un problema di include, in pratica non trova un typedef per __int64... che per altro a norma di standard non andrebbe utilizzato in quanto gli identificatori inizianti per doppio underscore sono riservati alle implementazioni. In generale per essere portabile (il codice) poi si dovrebbe prescindere dall'implementazione dei tipi.


8 warning
ignoring #pragma warning CPF.StandardTetris.STDateTime.cpp /Tetris/source line 17 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STDateTime.h /Tetris/source line 12 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STFile.h /Tetris/source line 14 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STPieceSequence.h /Tetris/source line 17 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STStrategy.h /Tetris/source line 15 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STStrategyManager.h /Tetris/source line 18 C/C++ Problem
ignoring #pragma warning CPF.StandardTetris.STStrategyRogerLLimaLaurentBercotSebastienBlondeelOnePiece1996.cpp /Tetris/source line 18 C/C++ Problem


qui ti dice solamente che sta ignorando delle direttive di precompilazione... in questo caso la "#pragma warning" che se ricordo bene dovrebbe servire solo a dare avvisi e messaggi (definiti dal programmatore) in fase di compilazione. non ricordo bene...


extra qualification 'CPF::StandardTetris::STConsole::' on member 'STConsole' CPF.StandardTetris.STConsole.h /Tetris/source line 33 C/C++ Problem


prova a togliere "CPF::" è un errore strano e forse c'è qualche problema nell'uso dei namespace che confonde il compilatore.
 

Arch@ngel

Ninja Skilled!
breakinlord ha scritto:
ma a te parte? a me no, mi ha detto che mancavano le librerie msvcr100.dll e msvcp100.dll, le ho scaricare e registrate
ora mi da questo errore:
"Impossibile trovare il punto di ingresso
_invalid_parameter_noinfo_noreturn della procedura nella libreria di collegamento dinamico MSVCR100.dll"

Poi come hai fatto per ottenere l'exe? Non ho mai fatto c e c++ in vita mia quindi non vi stupite delle domande ignoranti.

mi sento un invalido...


Io credo che tu abbia solo preso una brutta implementazione del tetris.
Dagli errori che vedo, pare che utilizzi LARGAMENTE dll di Windows, ad esempio dovresti scaricare il Microsoft Visual C++ 2010 Redistributable Package.
Ed anche qui non è colpa dell'IDE, ma del demente che ha scritto questo tetris utilizzando una barca di librerie legate all'OS.

A questo punto scaricati Visual C++ Express, compila e vai con dio.
 

Il Droide

Spam Master
E per altro ti sei anche scelto il codice scritto peggio, quello in C# è fatto decisamente meglio anche se non riesco a compilarlo su Mono per via dell'assenza del namespace Windows.Forms.

Quello in C++ non posso compilarlo perché mi mancano le librerie GL, e ancora non sono state portate su MinGW32.
 

Samael

Ninja Skilled!
Panda ha scritto:
poi ci si chiede perchè uno usa java
dipende da quello che devi fare... non esiste il linguaggio universale e un pessimo programmatore resta tale qualsiasi linguaggio usi.
 

Il Droide

Spam Master
Credo che Panda si riferisse al discorso della portabilità.
Comunque a me sta piacendo C#, anche se Vala lo strabatte :look:
 

Samael

Ninja Skilled!
Sirion ha scritto:
A dire il vero credo che sia ben più usato .net

Impressioni personali però.


c'è una differenza di fondo che è enormemente a favore di .net.


Mentre java è una piattaforma di sviluppo monolinguaggio, .net è una piattaforma su cui puoi sviluppare utilizzando linguaggi anche molto diversi tra loro, dal nativo C# che si mappa perfettamente (per ovvi motivi) sulla piattaforma, al C++ sebbene utilizzando opportune estensioni non standard, passando per molteplici altri.
Personalmente ho lavorato per qualche anno su .Net utilizzando C# e per quanto non mi piacciano alcuni aspetti del modello a oggetti di questa piattaforma (che secondo me possono creare confusione e problemi), devo ammettere che nel complesso MS stavolta ha fatto un buon lavoro: la piattaforma è piuttosto ben fatta, con una libreria ben strutturata ed organizzata, direi anche innovativa per certi versi.


Spem Rulez ha scritto:
Credo che Panda si riferisse al discorso della portabilità.
Comunque a me sta piacendo C#, anche se Vala lo strabatte :look:


sulla portabilità ci sarebbe parecchio da dire, in particolare non è che basti scegliere java (o chi per esso) e sei a posto: almeno fino a qualche anno fa c'erano piattaforme che non supportavano al meglio java. Poi dipende dalle capacità del programmatore e dalla volontà delle aziende che producono software... dove lavoravo io della portabilità se ne sbattevano altamente e commercialmente/economicamente parlando avevano anche ragione.
 

breakinlord

Ninja Skilled!
Vi aggiorno...


Ho installato Visual Studio 2010 professional ed adesso il tetris funziona bene...


Ora sta tutto nel riuscire ad interfacciare l'elmetto al tetris, speriamo che la mia inesperienza e repulsione verso c++ e la programmazione in genere ( :V ) non mi siano troppo d'intralcio


Anzi, cosa mi consigliate di fare?


Vi ricordo di non stupirvi se vi chiedo o dico qualche cosa di stupido


Faccio un modulo a parte per l'elmetto oppure inserisco il codice per la gestione degli input del casco direttamente nella classe che gestisce gli input da tastiera?


Inoltre non so come fare a lasciare in loop l'attesa degli input mentre il gioco continua :look:
Non so se mi sono spiegato... Devo fare tipo dei thread paralleli? :look:
 

Sirion

Spam Master
Che senso ha che una classe che gestisce input da tastiera debba gestire pure l'elmetto?

Creare una interfaccia per l'input e farla implementare da entrambe le classi (tastiera ed elmetto) è un punto di partenza. E' ovvio che il core del programma se ne deve sbattere se usi una tastiera o qualsiasi altra cosa, quindi astrai con l'interfaccia e lavora nella sua implementazione.

Magari usando anche qualche test unitario. Tutti dovrebbero usarli.

PS: non ho visto il codice e ti do consigli molto ad alto livello. C++ è una merda e non ha le interfacce mi pare di ricordare (non ci scrivo una riga da tipo 3 o 4 anni), ergo cliccami.
 

breakinlord

Ninja Skilled!
Epitaffio ha scritto:
l'elmetto che tipo di input invia? Non è un classico simulatore di tastiera?
l'elmetto invia degli input opachi gestiti dalle API... la comunicazione avviene tutta tramite le API

sg1g90.png



gesù! perchè viene rimpicciolita l'immagine?
 

breakinlord

Ninja Skilled!
l'elmetto invia diversi tipi di input comunque


riesce a leggere le espressioni facciali, expressive
lo stato emotivo dell'utente, emotive
lo sforzo cognitivo, cognitive (legge fino a 13 tipi di onde cerebrali corrispondenti a 12 movimenti spaziali più l'azione "scomparire")


guardate dal minuto 15 all'incirca
Mind Control Device Demonstration - Tan Le
 

Il Droide

Spam Master
Sirion ha scritto:
Che senso ha che una classe che gestisce input da tastiera debba gestire pure l'elmetto?

Creare una interfaccia per l'input e farla implementare da entrambe le classi (tastiera ed elmetto) è un punto di partenza.

*


Aggiungo anche: blord cerca sempre di tenere più distaccati possibili i diversi concetti dei diversi punti dell'applicazione: alla classe (o alle classi) responsabile di disegnare fisicamente il blocco del tetris e di spostarlo non frega un cazzo se il giocatore sta usando un elmetto o la tastiera, deve solo ricevere un segnale che gli dice "muovi a destra" o "muovi a sinistra", eccetera.
 

Samael

Ninja Skilled!
breakinlord ha scritto:
Faccio un modulo a parte per l'elmetto oppure inserisco il codice per la gestione degli input del casco direttamente nella classe che gestisce gli input da tastiera?


Inoltre non so come fare a lasciare in loop l'attesa degli input mentre il gioco continua :look:
Non so se mi sono spiegato... Devo fare tipo dei thread paralleli? :look:

meglio un modulo a parte, così isoli il tuo codice limitandoti ad inserire solo delle chiamate alle tue routine.

riguardo agli input, devi usare gli eventi... ovvero quando c'è un qualche input devi generare un evento e ovviamente devi prevedere un gestore per quegli eventi.

C++ è una merda e non ha le interfacce mi pare di ricordare (non ci scrivo una riga da tipo 3 o 4 anni), ergo cliccami.

a) stai dicendo una eresia
b) a che interfacce ti riferisci?
c) stai dicendo una eresia
 

Il Droide

Spam Master
Sì ma prima che ti metti a farlo a mano, guarda se il framework che stai utilizzando (SDL in questo caso, m'è parso di vedere) ti fornisce già un "main loop" che lancia gli eventi (o segnali, dipende da come li chiama il linguaggio), se così è (ed è così al 99,9%) tu devi solo creare i gestori.
 

Arch@ngel

Ninja Skilled!
Sirion ha scritto:
C++ è stupendo, ma io non sono nemmeno capace di creare una classe astratta con metodi virtuali.


Aggiustato.
Questo è quello che succede quando si offende C++.
Sappi che il primo T800 sarà programmato in quel linguaggio. Conosci il tuo nemico!
 
Alto