fs00 / rpg-game-4inc Goto Github PK
View Code? Open in Web Editor NEWDidactic and highly experimental Java CLI RPG game made by a bunch of IT students.
Didactic and highly experimental Java CLI RPG game made by a bunch of IT students.
Quando creo il file IAttaccante.java, IntelliJ mi dà errore nel parsing del template (cosa non vera, perché il file viene creato con il template giusto) e quindi l'IDE si rifiuta di riconoscerlo come file Java. La cosa assurda è che cambiando nome al file tutto funziona perfettamente!
Ho provato a ricreare il progetto e cancellare la cache dell'IDE ma niente. Capita anche a voi questo problema?
Se per voi non è un problema, riguardo alle graffe suggerisco di formattare il codice in maniera uniforme per tutti come sotto:
function a()
{
}
@AlibabaSakura so che a te non va a genio. Se proprio non riesci a fare a meno delle graffe sulla stessa riga, lasciamo perdere e ognuno fa come gli sta comodo (anche se comunque uniformare tutto sarebbe meglio, se possibile).
@AlibabaSakura suggeriva di randomizzare leggermente i valori delle statistiche nella creazione del personaggio. Se decidiamo di farlo, dobbiamo definire i dettagli implementativi e i range in %.
Se ve ne viene in mente qualcun'altro, aggiungetelo modificando il post!
Una cosa che non abbiamo ancora definito è il contrattacco.
Chi lo può usare? @AlibabaSakura suggeriva di implementarla come esclusiva del Contadino, per bilanciarlo rispetto al Soldato e al Mercenario. Tuttavia, come si giustifica il fatto che un Mercenario o un Soldato non sappiano contrattaccare?
Quindi lo implementiamo come parte del Contadino o come parte di IAttaccante?
E soprattutto, come va implementato? In teoria, quando si subisce il colpo ci dovrebbe essere una probabilità (da definire) che il colpo possa essere contrattaccato. Inoltre, chi contrattacca non dovrebbe subire il danno dell'attacco originario, ma chi subisce il contrattacco quanto danno deve subire? Io pensavo il 50% del danno originale, ditemi voi cosa ne pensate.
Ho iniziato a fare la presentazione del gioco, che vi ho condiviso su Google Drive.
A tal proposito, credo dovremmo decidere un nome da dare al gioco, per distinguerlo da quello degli altri gruppi.
P.S.: Ovviamente la presentazione è in stato embrionale (WIP), ma ogni suggerimento già da ora è ben accetto.
Prima domanda: Mercenario non è una derivata di soldato? Praticamente ha molti dei metodi che ha anche soldato, però è anche vero che dovremmo in qualche modo differenziarlo da esso...
Seconda domanda: Ma il Debole? A quanto ho capito "le prende" soltanto e non ha molto senso in un gioco a turni come il nostro. E se facessimo il Contadino come derivato di Debole, inteso come "colui che non fa il combattimento di mestiere"? In tal caso, però dovremmo decidere quali metodi accomunano i "deboli"...
La mia intenzione era quella, per ogni turno, di far scegliere prima a entrambi i giocatori le mosse e poi di darle in pasto alla classe di gestione, la quale calcolerebbe autonomamente chi far attaccare prima e gestirebbe tutto da sola.
@AlibabaSakura, invece, ha proposto di far sì che, dopo che il primo giocatore ha scelto la sua mossa, la si effettui subito, stessa cosa per il secondo. Quindi si dovrebbe fare un metodo da chiamare nel main prima di ogni turno per decidere (in base alla velocità) chi deve fare la sua mossa prima.
Dato che entrambi i modi hanno i loro pro e contro in fase di implementazione, quale decidiamo di fare? (domanda soprattutto per @alegotta, dato che non si è ancora espresso)
PS: Se la velocità di due personaggi è pari (può capitare, dato che la randomizzazione va da +5 a -5), allora entrambi avrebbero una probabilità del 50% di attaccare prima.
Il package name è "ittbuonarroti.rpggame" o "com.ittbuonarroti.rpggame"?
Prima del commit 826b3e3 veniva usato "com.ittbuonarroti.rpggame", mentre dopo "ittbuonarroti.rpggame".
Decidiamo quale tenere!
Stavo pensando che magari per stringhe all'interno di "GestionePartita" (O altre stringhe in classi non main) si potesse fare una classe di gestione delle lingue utilizzando dei file JSON come "contenitori" di stringhe (l'idea poteva anche essere usare i database ma già così il codice potrebbe diventare un po' complesso rispetto al JSON).
Ho già adocchiato questa libreria open source: https://code.google.com/archive/p/json-simple/ e una piccola guida su come usarla c'è qua: https://www.tutorialspoint.com/json/json_java_example.htm
@AlibabaSakura suggerisce di rivedere l'implementazione della ritirata attualmente presente (che verifica solo se la velocità di chi tenta la ritirata è maggiore di quella del nemico), in modo che sia sempre basata sulla velocità ma che dia a entrambi la possibilità di ritirarsi, non solo al personaggio più veloce.
A questo punto ho pensato che sarebbe interessante fare in modo che la probabilità sia basata sulla differenza di velocità tra i due personaggi, magari qualcosa come (50 + (VEL personaggio che si vuole ritirare - VEL nemico))%, in modo da avere una probabilità base del 50% che viene aumentata se la propria velocità è maggiore di quella del nemico, altrimenti diminuita (dato che la differenza tra le due velocità sarebbe negativa).
Cosa ne pensate?
Con la commit sopra citata, ho modificato ciò che avviene in fase di attacco (per ora solo nel Contadino, ma ho già predisposto anche Personaggio per questo cambiamento).
Adesso, attacca(Personaggio nemico)
chiama il metodo riceviColpo(IAttaccante, int danno)
, che si preoccupa di effettuare il contrattacco se ce n'è la possibilità e, nel caso questo fallisca, di mitigare il danno con la statistica difesa e chiamare modificaPuntiVita
con il valore del danno già sistemato.
Note:
Proporrei di generare la documentazione che scriviamo con JavaDoc nella cartella /docs (da creare)
Poi @Fs00 dovrebbe abilitare Github Pages in modo che possa essere visibile da chiunque.
Oltre al JavaDoc, a gioco finito si può pensare di aggiungere una piccola spiegazione del funzionamento del gioco ed alcuni screenshot nel ReadMe.
Dopo aver testato il gioco a riga di comando, ditemi quali sono le vostre sensazioni in termini di bilanciamento delle meccaniche.
Io personalmente ho rilevato che l'attacco caricato al doppio del danno è eccessivo, andrebbe ridimensionato magari al 50% in più.
Dobbiamo decidere come implementare la modalità difensiva del Soldato, parte di IDifesa.
@AlibabaSakura suggeriva di far perdere un turno al Soldato, in modo che poi nei turni successivi la sua difesa fosse raddoppiata (danni dimezzati attraverso l'override di modificaPuntiVita() presente in Combattente). Da qui seguono due domande:
L'implementazione, in ogni caso, toccherà a @AlibabaSakura.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.