Benvenuto Visitatore(Log In|Registrati)

6 Pagine V  « < 3 4 5 6 >  
Reply to this topicStart new topic
> Traduzione e ampliamento di "MANOR" in BASIC (MANIERO), Ultimo della serie "the sumer game": DEVLOG
TheRuler
messaggio18 Aug 2021, 09:33
Messaggio #101



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




CITAZIONE (selven @ 17 Aug 2021, 17:41) *
allora andiamo a iniziare, innanzitutto nel leggimi non c'è il changelog dopo la 2.22
secondo di poi se provo ad avviare la partita con invio mi dà permission denied in 242
ho installato il pcbasic 2.0.3 che hai linkato su
Ovviamente se eseguo il PCbasic come amministratore parte, credo che il problema sia il fatto che i file sono nella cartella programmi, ho dovuto modificare il famoso path da c:/user/nomeutente a "C:\Program Files (x86)\PC-BASIC 2.0\", a questo punto non conviene mettere i file direttamente nella cartella utente?
ho fatto una prova e tutto mi sembra a posto, domani vado avanti
Domanda il castello iniziale tutto grigio con le aste gialle non si può colorare di giallo anche il prato?

Grande selven. Il leggimi è provvisorio, devo ancora compilarlo con i cambiamenti dalla 2.23 alla 2.50, vero.

Invece di usare PCbasic 2.03, usa la 1.2.14, è più stabile e soprattutto più veloce.
Per il prato vedo come ci sta. in effetti potrebbe ricordare un campo di grano, più che un prato

Per i file sì, convienen metterli in un posto che non sia program files. Però devi ricordarti di aggiungere il path "DA" uguale al path dove hai i maniero.bas e maniero.int


EDIT: troppo?
File Allegato  Cattura.PNG ( 39.49k ) Numero di download: 2


meglio 2 righe, forse
File Allegato  Cattura2.PNG ( 29.88k ) Numero di download: 1


--------------------
 
selven
messaggio18 Aug 2021, 10:49
Messaggio #102





Gruppo: Gamer
Messaggi: 925
Iscritto il: 27 June 12
Da: Ravenna
Utente Nr.: 19.437
BGE The Last of Us
Playing Poco e niente
SO Windows7




visto che il percorso di default di pcbasic punta alla cartella utente non conviene far mettere i file direttamente lì magari in una cartella manor o direttamente i file in c:?
le istruzioni dovrebbero diventare una cosa simile:
CITAZIONE
Istruzioni per l'installazione:

1- Scarica e installa PC-BASIC, l'emulatore di GW BASIC da https://github.com/robhagemans/pcbasic/releases

2 -Metti i due file maniero2.bas e maniero2.int nella cartella c:\maniero

3- Modifica il collegamento di PC-BASIC modificando il campo Da c:\users\nomeutente a c:\maniero

4- avvia PC basic e scrivi:

LOAD "MANIERO2"
deve darti Ok
Poi scrivi:
RUN

decisamente meglio 2 righe

Messaggio modificato da selven il 18 Aug 2021, 11:02
 
TheRuler
messaggio18 Aug 2021, 11:36
Messaggio #103



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




CITAZIONE (selven @ 18 Aug 2021, 11:49) *
visto che il percorso di default di pcbasic ....
RUN
CITAZIONE
decisamente meglio 2 righe

e due righe sia.


Ho comunque idea di creare un installer.


--------------------
 
selven
messaggio22 Aug 2021, 14:43
Messaggio #104





Gruppo: Gamer
Messaggi: 925
Iscritto il: 27 June 12
Da: Ravenna
Utente Nr.: 19.437
BGE The Last of Us
Playing Poco e niente
SO Windows7




Ho fatto un altro paio di partite rapide (in una mi hanno invaso e nell'altra avvelenato), e mi sembra tutto ok, adesso devo reimparare a giocare se voglio arrivare più avanti ;p

Messaggio modificato da selven il 22 Aug 2021, 14:48
 
TheRuler
messaggio22 Aug 2021, 20:51
Messaggio #105



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




CITAZIONE (selven @ 22 Aug 2021, 15:43) *
Ho fatto un altro paio di partite rapide (in una mi hanno invaso e nell'altra avvelenato), e mi sembra tutto ok, adesso devo reimparare a giocare se voglio arrivare più avanti ;p

Intanto grazie ancora per il supporto selven.

Ho messo al solito link il nuovo pacchetto. Ho ottimizzato il codice riuscendo a recuperare altri 500Bytes circa. Ora all'avvio ci sono circa 4,5KB free, l'out of memory è scongiurato.
Dai per cortesia un occhio anche ad errori nel testo (anche le istruzioni). Tipo anche parole attaccate fra di loro o numeri attaccati a parole, o "a capo" strani.


Ecco qualche consiglio per cavarsela:
- Non aver fretta di attaccare, e comunque buttati sempre prima su chi è più debole (lo capisci con le spie)
- Per mantenere un buon tasso di crescita servono più di 8 acri a testa, ma non scendere MAI sotto i 7 per i nobili, tendono a prendersela.
- cerca sempre di non tassare troppo, all'inizio stai passo (5-15% max) e quando sono carenti dagli il grano, se no possono morire come mosche, le tasse della chiesa e del Re ci sono sempre anche se metti le tue a zero.
- quando combatti tieni sempre d'occhio le TUE perdite. far diventare il tuo popolo in buona salute non è facile e perdere 2-3 anni a recuperare le perdite di attacchi insistenti andati male potrebbe precluderti la vittoria finale contro il Re.
- mantenere in vita un nobile sconfitto ti fa guadagnare un nobile, fa felice i nobili ma scontenta i contadini, viceversa uccidendolo scontenta i nobili e fa felice i contadini. Valuta come sei messo col morale in quel momento.
- vendere la tua terra ti fa guadagnare molto grano e può essrti utile in caso di terra esaurita o campagna militare imminente (per poter pagare i mercenari)
Spesso ho venduto terra ad un nobile e poi l'ho attaccato per riprendermela ;-)


--------------------
 
TheRuler
messaggio28 Aug 2021, 09:18
Messaggio #106



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




La 2.50 è in release candidate. Non aggiungo più feature mi limito alla riparazione del codice.

Segnalo alcune delle nuove caratteristiche:

Migliorato il sistema del morale, mi ero accorto che non era legato direttamente ai decessi e alla terra pro capite (gravissimo) e l'ho anche portato da 3 step a 5 (furiosi, scontenti, pacifici, felici appagati) così ti accorgi più in fretta quando cambia.

Migliorato il sistema di spionaggio rendendolo più solido e interessante, ti dice più roba più random, ora anche a zero spie puoi avere chance di qualche sporadica info.

Riscritto alcune parti del testo per miglior chiarezza e aggiunto tanta grafica.

Ho dovuto ottimizzare il codice per far spazio alle aggiunte, tanta roba la calcolavo o mettevo a schermo in modo inefficiente.
MA QUANTO E' BELLO E FACILE IL BASIC!

Un bug fastidioso che ho corretto era dopo la distribuzione delle terre.
Calcolava le nascite PRIMA degli eventi (rivolte, peste ecc.) E quindi se distribuivi al limite (7.0 pro capite) capitava che nascendo gente il procapite si abbassasse e quindi potevi avere rivolte e morte anche se tutti erano felici.


--------------------
 
selven
messaggio28 Aug 2021, 11:29
Messaggio #107





Gruppo: Gamer
Messaggi: 925
Iscritto il: 27 June 12
Da: Ravenna
Utente Nr.: 19.437
BGE The Last of Us
Playing Poco e niente
SO Windows7




allora bello il castello iniziale, non capisco il muro grigio di caratteri che appare dopo
ho trovato un bug quando provo a ridistribuire le terre mi salta in alto dal morale previsto e non dagli acri previsti dove scrive il massimo e non posso fare più nulla
Ti ricordo che nel leggimi il changelog è fermo alla 2.22

Messaggio modificato da selven il 28 Aug 2021, 11:52
 
TheRuler
messaggio28 Aug 2021, 19:54
Messaggio #108



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




CITAZIONE (selven @ 28 Aug 2021, 12:29) *
allora bello il castello iniziale, non capisco il muro grigio di caratteri che appare dopo

mi serviva una cornice per le nuove informazioni che ho segnato in alto a dx e per il morale in basso. nessuna cornice che ho provato mi convinceva, ho provato anche una texture di muro ma le info sembravano all'esterno del maniero, quindi le ho messe all'interno. Quella è una porzione di muro arabescato tipo carta da parati.

CITAZIONE
ho trovato un bug quando provo a ridistribuire le terre mi salta in alto dal morale previsto e non dagli acri previsti dove scrive il massimo e non posso fare più nulla

non riesco a riprodurlo. Che versione di pcbasic stai usando?
Stai usando l'ultima versione di maniero su drive? La data del file maniero.bas deve essere 28/08/21 ore 00:40.
Fai uno screenshot quando ti capita. Quando il cursore è spostato esci dal gioco con CTRL+C e dimmi la linea del Break.
Thanks

CITAZIONE
Ti ricordo che nel leggimi il changelog è fermo alla 2.22

Sì, lo so. il leggimi lo faccio alla fine.


--------------------
 
selven
messaggio29 Aug 2021, 19:59
Messaggio #109





Gruppo: Gamer
Messaggi: 925
Iscritto il: 27 June 12
Da: Ravenna
Utente Nr.: 19.437
BGE The Last of Us
Playing Poco e niente
SO Windows7




allora ho fatto una nuova partita e non mi è ricapitato l'errore in compenso anche se erano tutti felici mi hanno impiccato ;P

PS: molto bella l'animazione del grano che cresce

Messaggio modificato da selven il 29 Aug 2021, 20:00
 
TheRuler
messaggio30 Aug 2021, 15:39
Messaggio #110



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Ma c'era una scritta tra "i ratti" e "il popolo ti invade"?
Avrebbe dovuto comparire in giallo lampeggiante "il popolo è in rivolta".
Se così fosse sarebbe tutto regolare.

Il check alla riga 370 che bypassa la rivolta e la possibile impiccagione SOLO SE tutte e tre le condizioni risultino VERE:

IF (MO(1)+MO(2))/2>.2 AND L(1)/P(1)>5 AND L(2)/P(2)>5

ovvero se la media del morale dei contadini e dei vassalli è maggiore di 0.2 ovvero furiosi (e qui c'eravamo)
E
la terra pro capite dei contadini è superiore a 5.0
E
la terra pro capite dei vassalli è superiore a 5.0

Hai sicuramente dato troppa poca terra ai contadii o ai vassalli, immagino a quest'ultimi visto che sono meno contenti degli altri.
Il morale, se dai troppa poca terra pro capite cambia in peggio ma ci vuole tempo perché passi da appagati a furiosi.
sebbene tu sia popolare tra la maggior parte dei vassalli alcuni si sono arrabbiati per le cattive condizioni in cui versa la propria gente e hanno invaso il maniero.

Pensi che debba modificare il check o il testo?


--------------------
 
selven
messaggio30 Aug 2021, 17:31
Messaggio #111





Gruppo: Gamer
Messaggi: 925
Iscritto il: 27 June 12
Da: Ravenna
Utente Nr.: 19.437
BGE The Last of Us
Playing Poco e niente
SO Windows7




la scritta gialla lampeggiante c'era quindi tutto ok, non saprei cosa devi modificare, ma vedere una schermata che dice che sono tutti felici e poi ti impiccano è un po' strano tant'è che avevo redistribuito tutto il possibile a me non era rimasto nemmeno un acro, non sto a sindacare su come viene calcolata la cosa però dovrebbe dirimi perchè vengo impiccato, se i vassalli hanno poca terra mi sembra strano che siano felici, può darsi che avessero meno di 5 acri a testa, ma non ricordo di aver letto da nessuna parte che questo fosse richiesto, magari potresti mettere un check quando ridistribuisci la terra che avvisi della cosa?
tieni conto che avevo nuovo popolo perchè avevo conquistato uno dei rivali, quindi erano diminuiti gli acri pro capite nonostante la terra fosse di più, e venivo da un paio di anni in cui i contadini erano arrabbiati, ma non mi avevano impiccato, poi vengo impiccato quando sono tutti contenti ;P

Messaggio modificato da selven il 30 Aug 2021, 17:33
 
TheRuler
messaggio30 Aug 2021, 17:55
Messaggio #112



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Si tratta di un check del gioco originale che non ho mai pensato di cambiare.
Nell'introduzione ho scritto che non è consigliabile scendere sotto i 7 acri pro capite. Scriverlo ingame penso che spezzi la sospensione dell'incredulità.

Magari potrei dividere le rivolte. Se gli acri procapite sono bassi per i contadini potrebbero rivoltarsi solo loro. Però devo rivedere i calcoli successivi delle perdite.

Far abbassare repentinamente il morale tenderei ad escluderlo. Si tratta di un errore di distribuzione che sarebbe troppo difficile da recuperare, ti ci vorrebbero alemeno due/tre anni. Invece se ti va fatta bene e la rivolta viene sedata, l'anno dopo hai la possibilità di riparare alla distribuzione.

EDIT: aspetta aspetta.

Ho notato una cosa che si può migliorare e PENSO non rompa nulla:
Il calcolo del morale dovuto alla distribuzione delle terre viene fatto in concomitanza con la riscossione delle tasse.
Ho provato a spostarlo subito dopo la distribuzione, in modo che sia più diretto il cambio di morale sia in positivo che in negativo.
Dimmi come va.


--------------------
 
selven
messaggio31 Aug 2021, 17:56
Messaggio #113





Gruppo: Gamer
Messaggi: 925
Iscritto il: 27 June 12
Da: Ravenna
Utente Nr.: 19.437
BGE The Last of Us
Playing Poco e niente
SO Windows7




allora ho fatto un altro po' di partite, nelle prime la sfiga ha regnato sovrana e sono morto male, però ho visto un bug avevo sia i moggi che i fiorini negativi e si erano uniti in un'unica voce
 
TheRuler
messaggio31 Aug 2021, 19:48
Messaggio #114



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Ti chiedo ancora dove stai facendo girare maniero, su gwbasic sotto dosbox? su pcbasic v1.2.14 o su pcbasic 2.0.3?

Devo cercare di capire come riprodurlo perché se vedessi capirei meglio. Dove ti unisce le voci? nel riepilogo in alto o in quello iniziale?
A me non succede, mi servono più info. come i valori negativi che avevi (l'unico modo per avere un overlap di voci è che i moggi negativi superassero le 5 cifre.

File Allegato  Cattura.JPG ( 15.66k ) Numero di download: 1


--------------------
 
selven
messaggio31 Aug 2021, 22:43
Messaggio #115





Gruppo: Gamer
Messaggi: 925
Iscritto il: 27 June 12
Da: Ravenna
Utente Nr.: 19.437
BGE The Last of Us
Playing Poco e niente
SO Windows7




PC basic 2.0.3, nel riepilogo in alto mi dava un valore altissimo di moggi, dopo un po' si è sistemato da solo

Messaggio modificato da selven il 31 Aug 2021, 22:44
 
TheRuler
messaggio31 Aug 2021, 23:51
Messaggio #116



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Ho preso le misure nel riepilogo perché stesse dentro le 5 cifre senza problemi. Moggi e fiorini possono essere tranquillamente 99.999, anche se improbabile.
Il fatto che si sia ripristinato propenderei per un problema di pcbasic.


Nuova versione online. Oggi ho lavorato su un nuovo blocco.
L'idea mi è venuta guardando il codice di Dukedom (il gioco del 1984 a cui Maniero si ispira) che ha richieste Random del Re di uomini o grano.
Un problema molto grosso in maniero è mantenere un buon equilibrio tra terreni e popolazione. Se si sfora troppo con la popolazione si va incontro a morale basso, rivolte e decessi.
Suona bruttissimo ma aver la possibilità di "liberarsi" di uomini potrebbe far cambiare le sorti della partita. Ecco che entra in gioco il Re.
Tra la stagione del raccolto e la distribuzione del grano carente alla popolazione ho messo il salvifico Re che entra a gamba tesa se hai già un debito e si offre magnanimamente di fartelo estinguere con uomini. Invece normalmente ha una chance del 30% di uscirsene con la richiesta.
Mandare via contadini o vassalli DOPO aver saputo come è andata la stagione del raccolto e PRIMA di elargire grano offre una grande possibilità strategica, a mio avviso.

va comunque betatestato.
Tutto orecchi per suggerimenti


--------------------
 
TheRuler
messaggio1 Sep 2021, 16:32
Messaggio #117



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




CITAZIONE (selven @ 31 Aug 2021, 23:43) *
PC basic 2.0.3, nel riepilogo in alto mi dava un valore altissimo di moggi, dopo un po' si è sistemato da solo

L'ho riprodotto e capito deove sta l'errore. In uno degli eventi casuali non ho trasformato il risultato di una operazione in intero.

Nuova versione online.
Files allegati
File Allegato  Cattura.JPG ( 93.09k ) Numero di download: 3
 


--------------------
 
TheRuler
messaggio2 Sep 2021, 20:47
Messaggio #118



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Aggiornato il LEGGIMI, con estrema fatica. fat_banana.gif


--------------------
 
TheRuler
messaggio8 Sep 2021, 10:12
Messaggio #119



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Una delle sfide più grosse del programmare in una lingua scritta nel 1983 che possa funzionare su sistemi dello stesso periodo è quella della RAM.
Il GW BASIC può gestire al massimo programmi di 60KB e sebbene MANIERO sia composto principalmente da codice, il progetto è cresciuto tantissimo in questi anni, e avendo aggiunto testo e nuove meccaniche e mi sono visto costretto a modificare il codice per mantenere una quantità di RAM libera adeguata alle operazioni.
Non ho voluto tagliare nulla né a livello narrativo né di codice. In questo periodo mi sono dedicato all'ottimizzazione di quest'ultimo e mi faceva piacere condividere, con chi avrà l'ardore di seguirmi, qualche soluzione tecnica.

Di seguito un esempio, prima la versione del 2018 e poi quella "ottimizzata" del 2021 annotata:


Questo blocco si occupa della generazione casuale degli eventi catastrofici che avvengono ad un dato punto dell'anno.
L'unica variabile da considerare che può modificare direttamente l'evento è SI ovvero la quantità di guardiani da assegnare alla supervisione delle scorte di grano (G).
Più magazzinieri assegni, meno probabile sarà il disastro (deciso all'inizio del blocco da PR, un numero INTERO casuale tra 0 e 100).
Ad esempio, se SI è 0, ovvero nessun guardiano, la probabilità che non succeda nulla è del 20% (check riga 5010, PR tra 0 e 20) se vero va in 5140, se falso in 5060 dove comincia un altro check, quello del TIPO di evento che accade e quanto grano andrà perduto (RA).
Sia che il check sia vero o falso la funzione ritorna al programma principale con RETURN.
CODICE
5000 PR=INT(RND*100)+1:LOCATE 17,1:PAR=1:IF G>1000 THEN PAR=G/1000
5001 IF SI=0 THEN 5010
5002 IF SI=1 THEN 5020
5003 IF SI=2 THEN 5030
5004 IF SI=3 THEN 5040
5005 IF SI=4 THEN 5050
5010 IF PR=>0 AND PR<=20 THEN 5140 ELSE GOSUB 76:GOTO 5060
5020 IF PR=>0 AND PR<=35 THEN 5140 ELSE GOSUB 76:GOTO 5060
5030 IF PR=>0 AND PR<=50 THEN 5140 ELSE GOSUB 76:GOTO 5060
5040 IF PR=>0 AND PR<=65 THEN 5140 ELSE GOSUB 76:GOTO 5060
5050 IF PR=>0 AND PR<=80 THEN 5140 ELSE GOSUB 76:GOTO 5060
5060 GOSUB 60:EV=INT(RND*5):COLOR 4
5070 IF EV=0 THEN GOSUB 60:RA=INT((150+RND*100)*(PAR)):IF RA=>G THEN ?"Ladri si sono introdotti nei tuoi magazzini trafugando tutto il grano rimasto." ELSE ?"Ladri si sono introdotti in un tuo magazzino trafugando"RA"moggi di grano."
5080 IF EV=1 THEN GOSUB 60:RA=INT((250+RND*150)*(PAR)):IF RA=>G THEN ?"Uno strano morbo ha colpito le scorte di grano. L'infezione le ha ridotte a 0." ELSE ?"Uno strano morbo ha colpito le scorte. Per non rischiare sono stati bruciati"RA"moggi."
5090 IF EV=2 THEN GOSUB 60:RA=INT((200+RND*150)*(PAR)):IF RA=>G THEN ?"Locuste hanno invaso i nostri magazzini di grano, distruggendo tutte le scorte." ELSE ?"Locuste hanno invaso parte dei magazzini, distruggendo"RA"moggi di grano."
5100 IF EV=3 THEN GOSUB 60:RA=INT((120+RND*160)*(PAR)):IF RA=>G THEN ?"Un incendio ha colpito i magazzini, tutto il grano è andato bruciato." ELSE ?"Un incendio ha colpito un magazzino,"RA"moggi di grano sono andati perduti."
5110 IF EV=4 THEN GOSUB 60:RA=INT((180+RND*120)*(PAR)):IF RA=>G THEN ?"Una alluvione ha flagellato la zona dei magazzini, l'intera scorta è andata     perduta." ELSE ?"Un'alluvione ha flagellato un magazzino, sono andati perduti"RA"moggi di grano."
5120 IF RA>G THEN G=0 ELSE G=G-RA:RA1=RA1+RA
5130 RETURN
5140 GOSUB 74:COLOR 2:?"Grazie al minuzioso e puntuale lavoro dei tuoi lavoratori (più un pizzico di":?"fortuna) nessuna calamità ha colpito le tue riserve di grano quest'anno.":?:RETURN




Il blocco seguente occupa 1275 Bytes contro i 1964 Bytes del precedente ed ha esattamente la stessa funzione con qualche miglioria.

CODICE
18 PR=INT(RND*100)+1:?:?
19 IF SI=0 AND PR>80 THEN 33
20 IF SI=1 AND PR>65 THEN 33
21 IF SI=2 AND PR>50 THEN 33
22 IF SI=3 AND PR>35 THEN 33
23 IF SI=4 AND PR>20 THEN 33
25 EV=INT(RND*5)+1:GOSUB 76:RA=INT(((RND*G/2)+(RND*EV*250))/((RND*SI)+1)):COLOR 4
26 IF EV=1 THEN ?"Ladri si sono introdotti nei tuoi magazzini trafugando";:IF RA=>G THEN ?" tutto il grano rimasto." ELSE ?RA W$"."
27 IF EV=2 THEN ?"Uno strano morbo ha colpito le tue scorte. ";:IF RA=>G THEN ?"L'infezione ha ridotto tutto il grano ad un ammasso putrescente." ELSE ?"Per non correre rischi sono stati bruciati"RA W$"."
28 IF EV=3 THEN ?"Le locuste hanno invaso i tuoi magazzini, distruggendo";:IF RA=>G THEN ?" tutte le scorte." ELSE ?RA W$"."
29 IF EV=4 THEN ?"Un grave incendio ha colpito i magazzini,";:IF RA=>G THEN ?" tutto il grano è andato bruciato." ELSE ?RA U$" sono andati in fumo."
30 IF EV=5 THEN ?"Un'alluvione ha flagellato la zona dei magazzini, ";:IF RA=>G THEN ?"l'intera scorta è andata perduta." ELSE ?"sono andati perduti"RA W$"."
31 IF RA=>G THEN G=0 ELSE G=G-RA:RA1=RA1+RA
32 RETURN
33 GOSUB 74:COLOR 2:?"Grazie al minuzioso e puntuale lavoro dei tuoi lavoratori (più un pizzico di":?"fortuna) nessuna calamità ha colpito le tue riserve di grano quest'estate.":?:RETURN


La prima modifica che salta all'occhio è il renumber delle linee, numeri a due cifre rispetto a 4. Sempre in piccolezze del genere ho spostato la generazione di PR da 0-100 a 1-101 in modo da omettere il simbolo = nel check della probabilità mantenendo le stesse percentuali. >80 significa da 81 a 101 (sottointeso visto che PR al massimo può essere 101).
la seconda è la sezione 5001-5050 che diventa 19-23 e raggruppa due IF in due linee diverse in uno essendo sostanzialmente check sequenziali e forzati.
Ho inoltre disposto in maniera decrescente le percentuali da 80 a 20 perché se una sola delle due condizioni è falsa anche tutte le altre lo sono e dunque passa direttamente alla riga 25.
Poniamo che SI=2 e PR=45: il check partirà dalla riga 19 ed essendo tutte condizioni FALSE arriverà fino alla riga 25 dove comincerà il check dell'evento avendo il guardiano fallito nel suo intento (avrebbe dovuto superare il 50% ovvero PR>50).
Se invece PR fosse stato 90, la riga 21 avrebbe dato esito VERO e dunque il programma sarebbe passato alla riga 33, dando l'evento positivo.
Il blocco del testo degli eventi ho deciso di ridurlo usando la costante stringa W$ al posto di "moggi di grano" e togliere le parti ridondanti del testo iniziale mettendolo solo nello THEN e togliendolo dall'ELSE.
Inoltre ho rimosso il calcolo dei moggi persi togliendolo da ogni riga e mettendolo solo nella 25 e sostituendolo con un algoritmo più interessante.
Alla riga 25 comincia il check dell'evento e ho deciso di legarlo sia alla variabile EV che a quella SI. Più l'evento è alto (1-5) più alta sarà la perdita di grano essendo la catastrofe più grave (furto < morbo < locuste < incendio < alluvione).
All'opposto invece, maggiore sarà SI (l'investimento sui guardiani) minore sarà la perdita di grano.
Per testare la bontà dell'algoritmo ho scritto un programmino ad hoc che visualizzasse la distribuzione statistica degli eventi in relazione a queste due variabili:

CODICE
5 RANDOMIZE TIMER:CLS:?"Statistical distribution of random natural events (SI=0 TO 4) ongoing...":ON ERROR GOTO 25
6 ?:?" SI":?"  0%":?" 10%":?" 20%":?" 30%":?" 40%":?" 50%":?" 60%":?" 70%":?" 80%":?" 90%":?"100%"
7 T1=TIMER:FOR SI=0 TO 4:G10=0:G20=0:G30=0:G40=0:G50=0:G60=0:G70=0:G80=0:G90=0:G100=0:FOR I=1 TO 1000000
10 EV=INT(RND*5)+1:G=INT(RND*10000):RA=INT((RND*G/2)+(RND*EV*250))/((RND*SI)+1):PERC=RA*100/(G+0.1)
11 IF PERC<=0 THEN G0=G0+1
12 IF PERC>0 AND PERC<=10 THEN G10=G10+1
13 IF PERC>10 AND PERC<=20 THEN G20=G20+1
14 IF PERC>20 AND PERC<=30 THEN G30=G30+1
15 IF PERC>30 AND PERC<=40 THEN G40=G40+1
16 IF PERC>40 AND PERC<=50 THEN G50=G50+1
17 IF PERC>50 AND PERC<=60 THEN G60=G60+1
18 IF PERC>60 AND PERC<=70 THEN G70=G70+1
19 IF PERC>70 AND PERC<=80 THEN G80=G80+1
20 IF PERC>80 AND PERC<=90 THEN G90=G90+1
21 IF PERC>90 AND PERC<=100 THEN G100=G100+1
22 NEXT:LOCATE 3,(SI+1)*12:?SI:LOCATE 4,(SI+1)*12:?G0:LOCATE 5,(SI+1)*12:?G10:LOCATE 6,(SI+1)*12:?G20:LOCATE 7,(SI+1)*12:?G30:LOCATE 8,(SI+1)*12:?G40:LOCATE 9,(SI+1)*12:?G50
23 LOCATE 10,(SI+1)*12:?G60:LOCATE 11,(SI+1)*12:?G70:LOCATE 12,(SI+1)*12:?G80:LOCATE 13,(SI+1)*12:?G90:LOCATE 14,(SI+1)*12:?G100:NEXT
24 T2=TIMER:?"Execution time for"I*5"iterations: ";:?INT(T2-T1):END
25 LOCATE 15+SI,1:?"SI="SI"  EV="EV"  G="G"  RA="RA"  PERC="PERC:RESUME NEXT


ed ecco l'output su un campione di 5 milioni di iterazioni:

CODICE
Statistical distribution of random natural events (SI=0 TO 4) ongoing...
SI         0           1           2           3           4
  0%        5           6           11          12          17
10%        74698       146235      226351      310990      399003
20%        148396      247962      341132      368015      345788
30%        169462      260515      216470      160447      126812
40%        178459      167264      100198      72203       56242
50%        183660      78272       46347       33751       26450
60%        111137      31370       19722       14612       11933
70%        40257       15285       10293       7983        6535
80%        20289       9289        6577        5206        4222
90%        12719       6369        4604        3660        3150
100%        8946        4710        3402        2757        2381
Execution time for 5.000005e+06 iterations:  0.4774314090027474

si noti come il grosso degli esiti tenda a spostarsi verso la perdita minore (0%) all'aumentare di SI.

Se siete arrivati a leggere fino a qui complimenti per la pazienza. ;-)
Per oggi è tutto, state sintonizzati per altre strabilianti avventure nel mondo del BASIC!


--------------------
 
TheRuler
messaggio9 Sep 2021, 21:37
Messaggio #120



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Altra puntata di "impara" il BASIC col Rullo.

Questa volta il blocco ottimizzato è quello della visualizzazione grafica della battaglia:
CODICE
5410 VIEW ?:CLS:GOSUB 60:BAT=INT(RND*90)+10:COLOR 14:?"ALL'ATTACCOOOOO!!! "
5411 BAT=BAT-1:IF BAT=0 THEN RETURN ELSE RANDOMIZE TIMER:X=INT(RND*41)+1
5412 IF X>0 AND X<=30 THEN 5422 ELSE IF X>30 AND X<=31 THEN 5423 ELSE IF X>31 AND X<=32 THEN 5424 ELSE IF X>32 AND X<=33 THEN 5425
5413 IF X>33 AND X<=35 THEN 5426 ELSE IF X>35 AND X<=37 THEN 5427 ELSE IF X>37 AND X<=39 THEN 5428 ELSE IF X>39 AND X<=41 THEN 5429
5422 GOSUB 70:?"             ";:GOTO 5411
5423 COLOR 14:?" ATTACCATE! ";:GOTO 5411
5424 COLOR 14:?" NON ARRETRATE! ";:GOTO 5411
5425 COLOR 14:?" DIFEDETE LA POSIZIONE! ";:GOTO 5411
5426 GOSUB 82:COLOR 3:?" SBANG! ";:GOTO 5411
5427 GOSUB 84:COLOR 2:?" WOOSH! ";:GOTO 5411
5428 GOSUB 86:COLOR 4:?" SDENG! ";:GOTO 5411
5429 GOSUB 74:COLOR 6:?" CLANK! ";:GOTO 5411

I GOSUB sono delle subroutine di suono in cui faccio il check del parametro SOU=1 (sound ON) ed esegui il suono se vero.
Come prima cosa definisco un numero random tra 10 e 100 e lo assegno alla variabile BAT dopo di che dalla riga 5411 comincio a decrementarlo e ogni volta che il loop torna alla riga 5411. Quando BAT arriva a 0 esce dalla routine e torna al gioco. Poi definisco X tra 1 e 41.
i check IF delle righe 5412 e 5413 servono ad indirizzare X verso gli slogan della battaglia da visualizzare, tutti con il loro suono e colore.
L'unica riga particolare è la 5422 che stampa una decina di spazi. E' anche la più probabile essendo l'IF X>0 AND X<=30, questo per rendere gli slogan più radi e distanziati.
Il codice è altamente infefficente, sia in termini di spazio che di velocità.

L'output a video:
File Allegato  BAT.JPG ( 59.1k ) Numero di download: 3

Nota: il ? è una abbreviazione del comando PRINT.

Per migliorare le prestazioni ho utilizzato l'approccio ad ARRAY con il comando DATA che permette di immagazzinare in una riga in un punto qualunque del programma una serie di costanti, per poi leggerle con READ quando ci fa più comodo.

CODICE
100 CLS:BA=INT(RND*90)+10
101 X=INT(RND*15)+1:COLOR X:IF X>9 THEN ?STRING$(32,32); ELSE GOSUB 68:PRINT Z$(X);
102 BA=BA-1:IF BA=0 THEN RETURN ELSE 101
121 FOR X=1 TO 9:READ Z$(X):NEXT:DATA " CLANK!"," ATTACCATE!"," NON ARRETRATE!"," DIFEDETE LA POSIZIONE!"," SBANG!"," WOOSH!"," SDENG!"," TRUCIDATELI TUTTI!"," PER IL MANIERO!"


la riga 121 ha la lista delle costanti (gli sogan) e la loro lettura DA 1 A 9 (la posizione in lista) messa in Z$(X).
questa funziona merita un minimo di spiegazione.
Z è una lettera che assegna l'utente, potrebbe essere di una o più lettere. E' il nome mnemonico che vuoi dare alla ta variabile.
$ perché quello che si aspetta il basic è una stringa di testo e non un numero. Se avessi voluto immagazzinarvi un numero avrei omesso il $.
(X) è il modo veloce per definire più variabili in una botta sola. Il ciclo FOR NEXT entro cui è READ Z$(X) reitera l'immagazzinamento delle costanti nelle variabili Z$ per X volte, in questo caso 9.
il risultato di questo ciclo è la definizioni delle seguenti variabili:
Z$(1)=" CLANK!"
Z$(2)=" ATTACCATE!"
...
Z$(9)=" PER IL MANIERO!"

il principio del loop è lo stesso, dato un BA random itera fino a che BA va a zero e poi esci (RETURN) altrimenti torna a 101
la riga 101 è dove accade il print. Definisco un'altra variabile X da 1 a 15, se X è maggiore di 9 stampa 32 caratteri di fila di valore null (il 32 nella tabella ascii) altrimenti stampa la variabile Z$(X). Dove X è il numero random tra 1 e 9.
Dunque se verrà fuori un X=8 verrà stampata la variabile Z$(8) ovvero " TRUCIDATELI TUTTI!".

il GOSUB per il suono ora è random con un valore della nota (X) che va da 40 a 50K.
CODICE
68 IF SOU=1 THEN SOUND X^4+36,2
69 RETURN


potreste essrervi chiesti come mai a volte tra un comando e l'altro si usi : o ;. La differenza sta nel come si vuole che venga eseguito il codice. il: è il vero delimitatore tra comandi e una volta eseguito va a capo mentre il ; significa che vuoi eseguire il comando subito di seguito.
lo stesso print scritto senza e con il ;

10 PRINT "HELLO":PRINT "WORLD"
produce:
HELLO
WORLD

10 PRINT "HELLO";:PRINT "WORLD"
produce
HELLOWORLD

Alla prossima!


--------------------
 
selven
messaggio10 Sep 2021, 11:51
Messaggio #121





Gruppo: Gamer
Messaggi: 925
Iscritto il: 27 June 12
Da: Ravenna
Utente Nr.: 19.437
BGE The Last of Us
Playing Poco e niente
SO Windows7




Al momento sto giocando a pathfinder appena posso vado avanti a testare
 
TheRuler
messaggio14 Sep 2021, 15:42
Messaggio #122



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Ho riscritto il calcolo delle morti e delle nascite a fine turno in modo che fosse propozionale con il morale (un valore che va da 0.01 a 3.00).
La convoluta formula originale non ne teneva conto, si trattava di un calcolo legato totalmente al caso:
CODICE
FOR A=1 TO 3

P(A)=P(A)+INT(RND*(P(A)/9)+3.5)-INT(RND*(P(A)/11)+1.5)

P(A+3)=P(A+3)+INT(RND*(P(A)/2.5-P(A+3))/2+RND*P(A+3)/5-P(A+3)/10)

NEXT


P(1)=Contadini
P(2)=Vassalli
P(3)=Nobili

il ciclo FOR da 1 a 3 cambia il valore della variabile A, la seconda parte (A+3) fa riferimento alle persone di sana costituzione (ovvero i soldati). Un modo furbo per avere in un unico ciclo di 3 passaggi due formule diverse.

P(4)=Contadini sani
P(5)=Vassalli sani
P(6)=Nobili sani

Le nuove formule:
CODICE
FOR A=1 TO 3

P(A)=P(A)+INT(MO(A)*P(A)/22-RND*P(A)/10)

P(A+3)=P(A+3)+INT(MO(A)*(P(A)-P(A+3))/10-RND*(P(A+3)/4))

NEXT


Per testarne la bontà ho adattato il programmino che avevo scritto per i disastri casuali e questo è l'output per il morale a step di 0.2:
CODICE
Statistical distribution of random births/deaths (MO=0 TO 3) ongoing...

MO 3.0 2.8 2.6 2.4 2.2 2.0 1.8 1.6 1.4 1.2 1.0 0.8 0.6 0.4 0.2 0.0
-15 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
-10 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
- 5 0   0   0   0   0   0   0   0   0   0   31  145 245 331 385 518
  0 0   0   0   0   0   84  172 266 390 405 501 484 512 490 521 483
+ 5 136 247 319 428 508 508 526 508 489 536 469 372 244 180 95  0
+10 498 504 498 502 493 409 303 227 122 60  0   0   0   0   0   0
+15 367 250 184 71  0   0   0   0   0   0   0   0   0   0   0   0
+20 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
+25 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
+30 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
+35 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

La forbice dell'incremento/decremento di popolazione (sempre positivo solo sopra i 2.2 di morale) va dal +15% al -10% di P(A) .


diverso invece per le persone di sana costituzione:
CODICE
MO 3.0 2.8 2.6 2.4 2.2 2.0 1.8 1.6 1.4 1.2 1.0 0.8 0.6 0.4 0.2 0.0          
-15 0   0   0   0   0   0   0   0   0   0   0   31  125 215 308 402            
-10 0   0   0   0   0   0   0   0   0   46  181 230 193 201 190 183            
- 5 0   0   0   0   0   0   0   80  163 202 195 191 201 218 206 228            
  0 0   0   0   0   3   91  193 211 205 216 196 203 204 203 206 188            
+ 5 0   0   13  122 199 198 211 185 206 200 198 191 220 164 91  0              
+10 42  149 210 197 208 179 198 187 195 189 173 155 58  0   0   0              
+15 197 184 206 209 198 212 183 217 191 148 58  0   0   0   0   0              
+20 189 192 198 187 194 207 201 121 41  0   0   0   0   0   0   0              
+25 203 197 192 195 199 114 15  0   0   0   0   0   0   0   0   0              
+30 202 218 182 91  0   0   0   0   0   0   0   0   0   0   0   0              
+35 168 61  0   0   0   0   0   0   0   0   0   0   0   0   0   0

forbice più larga che va dal +35% al -20% di P(A+3)


--------------------
 
TheRuler
messaggio20 Sep 2021, 08:36
Messaggio #123



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Parlando di flusso di gioco e non per questa volta di meccaniche, nella versione originale di Leon Baradat al giocatore era presentata ogni volta una scelta con solo una parte delle informazioni a volte solo quelle funzionali come ad esempio
"I tuoi contadini sono a corto di grano, quanto vuoi dargliene? hai a disposizione 500 moggi"
I dati del gioco però vengono comunque presi in considerazioni nei calcoli come il limite di moggi pro capite sotto il quale cominciano i decessi, il numero di contadini, la quantità di grano che hanno prodotto ecc. Tutte informazioni utili alle scelte del giocatore che, meta-parlando, un consigliere esperto era in grado di fornirti all'epoca.

Qui l'idea di creare un riepilogo informativo sempre aggiornato con il più altro numero possibile di informazioni utili alle scelte di gioco.
Omettendo ovviamente tutte quelle variabili che invece aiuterebbero troppo e toglierebbero immersività come la forza esatta di un avversario, tutte le variabili della battaglia, eccetera.


Mi sono trovato recentemente a modificare la grafica e perché non includerla anche nel riepilogo. Di seguito tutte le versioni e le varianti uscite durante il processo creativo.

Notare che in GWBASIC non è presente interlinea, dunque le linee verticali risulteranno unite a differenza di quelle nei codebox di seguito:

la v1 presente in maniero 2.22:
CODICE
│ I tuoi possedimenti        75 acri       15 fiorini    150 moggi di grano    │
│    1385 acri totali        75 servi      15 nobili     60 contadini          │
│     In buona salute        30 servi      8 nobili      22 contadini          │
└──────────────────────────────────────────────────────────────────────────────┘



la v2 presente in maniero 2.40 (mai rilasciata), e sue varianti:

CODICE
╔════I tuoi possedimenti════╦═contadini══╦═vassalli═══╦══nobili════╦═sol═╦═pop═╗
║ 75 acri      1385 totali  ║ 22 / 60      30 / 75       8 / 15    ╠ 60  ╩ 150 ╣
║ 913 moggi    50 fiorini   ║ pacifici     pacifici      pacifici  ║  ESTATE   ║
╚═══════════════════════════╩════════════╩════════════╩════════════╩═══════════╝


varianti v2:
╔════I tuoi possedimenti════╦═contadini═╦═vassalli══╦══nobili═══╦═sol═╦═pop═╗
║ 75 acri      1385 totali  ║ 100 ╩ 100 ║ 100 ╩ 100 ║ 100 ╩ 100 ╠ 60  ╩ 150 ╣
║ 913 moggi    50 fiorini   ║ pacifici  ║ pacifici  ║ pacifici  ║  ESTATE   ║
╚═══════════════════════════╩═══════════╩═══════════╩═══════════╩═══════════╝
╔═acri╦═moggi╦═fio═╦══════════════════╦contadini╦vassalli═╦═nobili══╦═sol╦═pop═╗
║ 1000╚ 10000╩ 1000╣                  ╠ 100╩ 100╬ 100╩ 100╬ 100╩ 100╬ 60 ╩ 150 ╣
║ 90000  a maggese ╣                  ║scontenti║felici   ║felici   ║ AUTUNNO  ║
╚══════════════════╩══════════════════╩═════════╩═════════╩═════════╩══════════╝

╔═acri╦═moggi╦═fio═╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦contadini╦vassalli═╦═nobili══╦═sol╦═pop═╗
║ 1000╚ 10000╩ 1000╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣ 100╩ 100╬ 100╩ 100╬ 100╩ 100╬ 60 ╩ 150 ╣
║ 90000  a maggese ╠╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣scontenti║felici   ║felici   ║ AUTUNNO  ║
╚══════════════════╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩═════════╩═════════╩═════════╩══════════╝

╔═acri═╦═moggi═╦═fio═╦═════════╦═contadini═╦═vassalli══╦══nobili═══╦═sol═╦═pop═╗
║ 9000 ╚ 10000 ╩ 100 ╣         ╠ 100 ╩ 100 ╬ 100 ╩ 100 ╬ 100 ╩ 100 ╬ 60  ╩ 150 ╣
║ 1000   a maggese   ║         ║ scontenti ║ felici    ║ felici    ║  AUTUNNO  ║
╚════════════════════╩═════════╩═══════════╩═══════════╩═══════════╩═══════════╝

╔═acri═╦═moggi═╦═fio═╦╦╦╦╦╦╦╦╦╦╦═contadini═╦═vassalli══╦══nobili═══╦═sol═╦═pop═╗
║ 9000 ╚ 10000 ╩ 100 ╠╬╬╬╬╬╬╬╬╬╣ 100 ╩ 100 ╬ 100 ╩ 100 ╬ 100 ╩ 100 ╬ 60  ╩ 150 ╣
║ 1000   a maggese   ╠╬╬╬╬╬╬╬╬╬╣ scontenti ║ felici    ║ felici    ║  AUTUNNO  ║
╚════════════════════╩╩╩╩╩╩╩╩╩╩╩═══════════╩═══════════╩═══════════╩═══════════╝

╔═acri╦═moggi╦═fio═╦═══contadini═══╦════vassalli═══╦════nobili═════╦═sol╦═pop═╗
║ 9000╚ 10000╚ 1000║ 100  scontenti║ 100  scontenti║ 100  scontenti║ 60 ╩ 150 ║
║ 1000 a maggese   ║ 100  a maggese║ 100  a maggese║ 100  a maggese║ AUTUNNO  ║
╚══════════════════╩═══════════════╩═══════════════╩═══════════════╩══════════╝

╔═acri╦═moggi╦═fio═╦═══contadini══╦═══vassalli═══╦════nobili════╦════════╗
║ 9000╚ 10000╚ 1000║ 100 scontenti║ 100 scontenti║ 100 scontenti║ 300 sol║
║ 1000 a maggese   ║ 300 a maggese║ 300 a maggese║ 300 a maggese║ 900 pop║
╚══════════════════╩══════════════╩══════════════╩══════════════╩════════╝

╔═acri╦═moggi╦═fio═╦╦╦╦╦═══contadini══╦═══vassalli═══╦════nobili════╦════════╗
║ 9000╚ 10000╚ 1000╠╬╬╬╣ 100 scontenti║ 100 scontenti║ 100 scontenti║ 300 sol║
║ 1000 a maggese   ╠╬╬╬╣ 300 a maggese║ 300 a maggese║ 300 a maggese║ 900 pop║
╚══════════════════╩╩╩╩╩══════════════╩══════════════╩══════════════╩════════╝

╔═acri╦═moggi╦═fio═╦═contadini═╦═vassalli══╦══nobili═══╦═sol═╦═pop═╗
║ 9000╚ 10000╚ 1000║ 100 ╩ 100 ║ 100 ╩ 100 ║ 100 ╩ 100 ╠ 60  ╩ 150 ╣
║ 1000 a maggese   ║ pacifici  ║ pacifici  ║  pacifici ║  ESTATE   ║
╚══════════════════╩═══════════╩═══════════╩═══════════╩═══════════╝

╔═acri═╦═moggi═╦═fio══╦═contadini═╦═vassalli══╦══nobili═══╦═sol═╦═pop══╗
║ 9000 ╚ 10000 ╚ 1000 ║ 100 ╩ 100 ║ 100 ╩ 100 ║ 100 ╩ 100 ╠ 60  ╩ 150  ╣
║ 1000  a maggese     ║ pacifici  ║ pacifici  ║  pacifici ║  ESTATE    ║
╚═════════════════════╩═══════════╩═══════════╩═══════════╩════════════╝



la v3 presente in maniero 2.45 e varianti:
CODICE
╔ acri ╦ moggi ╦ fio  ╦╦╦╦╦ contadini ╦ vassalli  ╦  nobili   ╦╦╦╦╦ sol ╦ pop  ╗
║ 9000 ╚ 10000 ╚ 1000 ╠╬╬╬╣ 100 ╩ 100 ║ 100 ╩ 100 ║ 100 ╩ 100 ╠╬╬╬╣ 60  ╩ 150  ╣
║ 1000  a maggese     ╠╬╬╬╣ pacifici  ║ pacifici  ║  pacifici ╠╬╬╬╣  ESTATE    ║
╚═════════════════════╩╩╩╩╩═══════════╩═══════════╩═══════════╩╩╩╩╩════════════╝

v3 variante
╔╦╗ acri ╔ moggi ╔ fio  ╔╦╦╗ contadini ╦ vassalli  ╦  nobili   ╔╦╗ sol ╔ pop ╔╦╗
╠╬╣ 9000 ╚ 10000 ╚ 1000 ╠╬╬╣ 100 ╩ 100 ║ 100 ╩ 100 ║ 100 ╩ 100 ╠╬╣ 60  ╚ 1505╠╬╣
╠╬╣ 1000    a maggese   ╠╬╬╣ pacifici  ║ pacifici  ║ pacifici  ╠╬╣   ESTATE  ╠╬╣
╚╩╩═════════════════════╩╩╩╩═══════════╩═══════════╩═══════════╩╩╩═══════════╩╩╝

╔╦╗      ╔       ╔      ╔╦╗           ╦           ╦           ╔╦╗     ╔      ╔╦╗
╠╬╣      ╚       ╚      ╠╬╣     ╩     ║     ╩     ║     ╩     ╠╬╣     ╚      ╠╬╣
╠╬╣                     ╠╬╣           ║           ║           ╠╬╣            ╠╬╣
╚╩╩═════════════════════╩╩╩═══════════╩═══════════╩═══════════╩╩╩════════════╩╩╝



le varianti v4 e quella che presumibilmente sarà la versione finale rilasciata con la v2.5 Deluxe:
CODICE
╔═╗ acri ╦ moggi ╦ fio  ╦═╦═ contadini ╦ vassalli  ╦  nobili   ╦═╦ sol ╔ pop ╦═╗
╠╦╩ 9000 ╚╗10000 ╩ 1000 ╩╦╩╦ 100 ╩ 100 ╬ 100 ╩ 100 ╬ 100 ╩ 100 ╩╦╩ 60  ╚ 1505╚╦╣
╠╩╦ 1000 ╔╝ a maggese   ╦╩╦╩ pacifici  ╬ pacifici  ╬ pacifici  ╦╩╦   ESTATE  ╦╩╣
╚═╩══════╩══════════════╩═╩════════════╩═══════════╩═══════════╩═╩═══════════╩═╝

╔═╗ acri ╦ moggi ╦ fio ═╦═╦═ contadini ╦ vassalli ═╦═ nobili ╦═╦═╦ sol ╦ pop ╦═╗
╠╦╩ 9000 ╚ 10000 ╩ 1000 ╩╦╩╦ 100 ╩ 100 ╩ 100 ╩ 100 ╩ 100 ╩ 100 ╩╦╩ 60  ╩ 1505╚╦╣
╠╩╦ 1000 ╔╝ a maggese   ╦╩╦╩ pacifici  ╦ pacifici  ╦ pacifici  ╦╩╦═  ESTATE  ╦╩╣
╚═╩══════╩══════════════╩═╩════════════╩═══════════╩═══════════╩═╩═══════════╩═╝


╔═╦ acri ╦ moggi ╦ fio ═╦═╦═ contadini ╦ vassalli ═╦═ nobili ╦═╦═╦ sol ╦ pop ╦═╗
╠╦╩ 9000 ╩ 10000 ╩ 1000 ╩╦╩╦ 100 ╩ 100 ╩ 100 ╩ 100 ╩ 100 ╩ 100 ╩╦╩ 60  ╩ 1505╚╦╣
╠╩╦ 1000 ╦╩ a maggese ╦═╦╩╦╩ scontenti ╦ felici    ╦ pacifici  ╦╩╦ PRIMAVERA ╦╩╣
╚═╩════╩═╩═╩══════════╩═╩═╩═╩════════╩═╩═════════╩═╩═════════╩═╩═╩═╩═══════╩═╩═╝

╔═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦═╦╗
╠╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╣
╠╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╩╦╣
╚═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩═╩╝



    acri   moggi   fio       contadini   vassalli     nobili       sol   pop
    9000   10000   1000      100   100   100   100   100   100     60    1505
    1000    a maggese        scontenti   felici      pacifici       AUTUNNO
    
╔═╦      ╦       ╦     ═╦═╦═           ╦          ═╦═        ╦═╦═╦     ╦     ╦═╗
╠╦╩      ╩       ╩      ╩╦╩╦     ╩     ╩     ╩     ╩     ╩     ╩╦╩     ╩     ╚╦╣
╠╩╦      ╦╩           ╦═╦╩╦╩           ╦           ╦           ╦╩╦           ╦╩╣
╚═╩════╩═╩═╩══════════╩═╩═╩═╩════════╩═╩═════════╩═╩═════════╩═╩═╩═╩═══════╩═╩═╝


    9000   10000   1000      100   100   100   100   100   100     60    1505
    1000

╔═╦ acri ╦ moggi ╦ fio ═╦═╦═ contadini ╦ vassalli ═╦═ nobili ╦═╦═╦ sol ╦ pop ╦═╗
╠╦╩ 1385 ╩ 763   ╚ 50  ╔╩╦╩╦ 22  ╩ 60  ╩ 30  ╩ 75  ╩ 8   ╩ 22  ╩╦╩ 53  ╩ 150 ╚╦╣
╠╩╦ 75  ╩╦╩ discreta  ╦╩╦╩╦╩ pacifici  ╦ pacifici  ╦ pacifici  ╦╩╦  ESTATE   ╦╩╣
╚═╩════╩═╩═╩══════════╩═╩═╩═╩════════╩═╩═════════╩═╩═════════╩═╩═╩═╩═══════╩═╩═╝

╔═╦ acri ╦ moggi ╔ fiorini╔═ contadini ╦ vassalli ═╦═ nobili ╦═╦═╦ sol ╦ pop ╦═╗
╠╦╩ 1385 ╩ 913  ═╩ 50  ╔═╦╩╦ 22 ═╩ 60 ═╩ 30 ═╩ 75 ═╩ 8  ═╩ 22 ═╩╦╩ 53 ═╩ 150 ╚╦╣
╠╩╦ 75  ╩╦╩   buona   ╦╩╦╩╦╩ pacifici  ╦ pacifici  ╦ pacifici  ╦╩╦  ESTATE   ╦╩╣
╚═╩════╩═╩═╩══════════╩═╩═╩═╩════════╩═╩═════════╩═╩═════════╩═╩═╩═╩═══════╩═╩═╝

v4 finale:
╔═╦ acri ╦ moggi ╔ fiorini╔═ contadini ╦ vassalli ═╦═ nobili ╦═╦═╦ sol ╦ pop ╦═╗
╠╦╩ 1385 ╩ 838  ═╩ 50  ╔═╦╩╦ 22 ═╩ 60 ═╩ 30 ═╩ 75 ═╩ 8  ═╩ 22 ═╩╦╩ 53 ═╩ 150 ╚╦╣
╠╩╦ 75  ╩╦╩ discreta ═╦╩╦╩╦╩ pacifici  ╦ pacifici  ╦ pacifici  ╦╩╦  ESTATE   ╦╩╣
╚═╩════╩═╩═╩════════╩═╩═╩═╩═╩════════╩═╩═════════╩═╩═════════╩═╩═╩═╩═══════╩═╩═╝


la sneak preview:

File Allegato  riepilogo_new.jpg ( 43.44k ) Numero di download: 3


Alla prossima!


--------------------
 
TheRuler
messaggio24 Sep 2021, 23:18
Messaggio #124



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Il betatest è ormai in corso da 2 mesi e direi che dovremmo essere agli sgoccioli.
Di strada ne ha fatta la 2.5, posso affermare che rispetto alla 2.22 il codice modificato è circa il 50%.
L'elenco delle nuove feature sarà presente nel Leggimi, ma ci tenevo a condividere la più recente delle feature:

- La mappa non è più solamente cosmetica. Introdotta la verifica delle adiacenze, in modo che un nobile possa attaccare solo i propri confinanti (nel gioco originale due feudi opposti si potevano attaccare ma di fatto non si scambiavano terra)

- La verifica delle adiacenze aggiunge un nuovo livello strategico al gioco, potenziando la compravendita dei terreni. Ad esempio per tagliare l'accesso ad un particolare feudo ad un altro nobile, escludendo la minaccia che quest'ultimo possa conquistarlo, oppure vendendo una striscia contigua di terra ad un feudo X per isolarsi dal feudo Y.


File Allegato  come_dovrebbe_essere.PNG ( 65.06k ) Numero di download: 2


--------------------
 
TheRuler
messaggio25 Sep 2021, 15:50
Messaggio #125



Gruppo icone

Gruppo: SMod
Messaggi: 11.744
Iscritto il: 20 January 06
Da: Bologna
Utente Nr.: 2.653
Entropologo part-time

BGE AG: Indy3
Arcade: Silpheed
Free Roaming: Shadow of the Colossus
RTS: Praetorians

Playing Magari...
SO Windows7

OGI Supporter




Fatto il post sul perché, ora vi tocca il post sul come. ;-)


Il controllo viene effettuato su tutte e 4 le ortogonali di ogni casella. Il ciclo è relativamente veloce e si compone di un primo IF seguito da un secondo IF nested con i quattro OR.
Il ciclo comincia sempre dalla prima casella in alto a sinistra. Quando trova l'adiacenza esce subito dal ciclo e dà l'OK per l'attacco, se non trova l'adiacenza prosegue con la casella successiva fino alla fine della mappa in basso a destra senza dare l'OK.

CODICE
250 A=INT(RND*6):B=INT(RND*6):IF X=Y THEN 250
300 FOR Y=1 TO 22:FOR X=1 TO 40:IF T(Y,X)=SE(A) THEN IF T(Y,X+1)=SE(B) OR T(Y,X-1)=SE(B) OR T(Y+1,X)=SE(B) OR T(Y-1,X)=SE(B) THEN END
301 NEXT:NEXT:LOCATE 2,2:?"adiacenza non trovata":END



ho poi fatto un programmino per testare il check:
CODICE
10 DIM T(23,41):KEY OFF:CLS:RANDOMIZE TIMER
100 FOR A=1 TO 8:FOR B=1 TO 23:T(A,B)=176:NEXT:NEXT:FOR B=1 TO 15:T(9,B)=176:NEXT:FOR B=1 TO 14:T(10,B)=176:NEXT:FOR B=1 TO 10:T(11,B)=176:NEXT
101 FOR B=11 TO 14:T(11,B)=237:NEXT:FOR B=1 TO 14:T(12,B)=237:NEXT:FOR A=13 TO 17:FOR B=1 TO 15:T(A,B)=237:NEXT:NEXT:FOR B=1 TO 11:T(18,B)=237:NEXT
102 FOR A=1 TO 6:FOR B=24 TO 40:T(A,B)=8:NEXT:NEXT:FOR B=24 TO 32:T(7,B)=8:NEXT:FOR B=24 TO 31:T(8,B)=8:NEXT
103 FOR A=33 TO 40:T(7,A)=15:NEXT:FOR A=8 TO 19:FOR B=32 TO 40:T(A,B)=15:NEXT:NEXT:FOR A=9 TO 18:FOR B=30 TO 40:T(A,B)=15:NEXT:NEXT:FOR B=28 TO 29:T(17,B)=15:NEXT:FOR B=36 TO 40:T(20,B)=15:NEXT:FOR B=38 TO 40:T(21,B)=15:NEXT
104 FOR A=9 TO 16:FOR B=16 TO 29:T(A,B)=219:NEXT:NEXT:FOR A=10 TO 12:T(A,15)=219:NEXT:FOR B=16 TO 27:T(17,B)=219:NEXT:
105 FOR B=11 TO 29:T(18,B)=178:NEXT:FOR B=1 TO 31:T(19,B)=178:NEXT:FOR B=1 TO 35:T(20,B)=178:NEXT:FOR B=1 TO 37:T(21,B)=178:NEXT:FOR B=1 TO 40:T(22,B)=178:NEXT
120 SE(0)=219:SE(1)=176:SE(2)=237:SE(3)=178:SE(4)=15:SE(5)=8:SE(6)=206
130 CL(0)=2:CL(1)=13:CL(2)=11:CL(3)=14:CL(4)=12:CL(5)=15:CL(6)=9
210 CL=2:FOR A=1 TO 22:FOR B=1 TO 40
211 IF T(A,B)=T(A,B-1) THEN 213 ELSE IF T(A,B)=219 THEN CL=2 ELSE IF T(A,B)=176 THEN CL=13 ELSE IF T(A,B)=237 THEN CL=11 ELSE IF T(A,B)=178 THEN CL=14 ELSE IF T(A,B)=15 THEN CL=12 ELSE IF T(A,B)=8 THEN CL=15
212 COLOR CL
213 ?CHR$(T(A,B));:NEXT:?:NEXT
250 X=INT(RND*6):Y=INT(RND*6):IF X=Y THEN 250
255 LOCATE 12,60:COLOR CL(X):?STRING$(2,SE(X))"-->";:COLOR CL(Y):?STRING$(2,SE(Y)):LOCATE 1,1
300 FOR A=1 TO 22:FOR B=1 TO 40:LOCATE A,B:IF T(A,B)=SE(X) THEN IF T(A,B+1)=SE(Y) OR T(A,B-1)=SE(Y) OR T(A+1,B)=SE(Y) OR T(A-1,B)=SE(Y) THEN COLOR 26:?"X":GOTO 303
301 NEXT:NEXT:LOCATE 2,2:?"adiacenza non trovata":GOTO 303
303 WHILE INKEY$="":WEND:LOCATE 1,1:GOTO 210

Files allegati
File Allegato  1.PNG ( 343.64k ) Numero di download: 0
File Allegato  2.PNG ( 334.07k ) Numero di download: 0
 


--------------------
 

6 Pagine V  « < 3 4 5 6 >
Reply to this topicStart new topic
1 utenti stanno leggendo questa discussione (1 visitatori e 0 utenti anonimi)
0 utenti:

 

Modalità di visualizzazione: Normale · Passa a: Lineare · Passa a: Outline


Versione Lo-Fi Oggi è il: 7th February 2023 - 19:10