[Javascript] Mini Gioco testuale
Mi stavo divertendo un po con Javascript e stavo provando a fare un mini gioco dove a ogni giocatore viene assegnato un personaggio a caso (ogni personaggio ha un certo livello combattivo) questi personaggi poi combattono a caso finchè non ne rimane uno solo (quando un personaggio sconfigge un altro il suo livello combattivo diminuisce della quantità del livello combattivo del personaggio che ha sconfitto)
tutta via mi sono dimenticato di tenere in considerazione che a un certo punto ci saranno un numero dispari di giocatori
per esempio se partono in 10 al primo round 5 ne verranno sconfitti
quindi nel secondo round ci saranno 5 giocatori rimasti in gara, infatti facendo una prova mi capita che a un certo punto un giocatore combatte 2 volte
ecco come si presenta "l'interfaccia di gioco"



come vedete nel round 2 "player2" combatte 2 volte
ecco la funzione che svolge tutti i combattimenti
piccola nota
ho un vettore di vettori new_arr che contiene i giocatori i personaggi e i livelli combattivi dei personaggi fatto più o meno così
var new_arr =
[
[giocatore 1,....... giocatoreN]
[personaggio1........personaggioN]
[poterePers1........poterePersN]
]
a un certo punto nel codice mischio new_arr[1] e new_arr[2] in maniera simultanea (per tenere uniti i personaggi e il loro "potere" così ogni giocatore si ritrova con un personaggio casuale ma vabbè quella parte funziona...e poi rimischio tutto per genereare gli incontri casuali
praticamente qui controllo se la lunghezza del new_arr[0] (dove ci sono i giocatori) è pari in tal caso faccio tutto tranquillamente,se però è dispari vorrei fare in modo che il primo elemento di new_arr
quindi
new_arr[0][0].shift()
new_arr[1][0].shift()
new_arr[2][0].shift()
venisse rimosso e salvato da qualche parte, svolgere i combattimenti normalmente ed aggiungere il valore salvato da qualche parte alla fine del for
new_arr[0][0].push(valore salvato)
new_arr[1][0].push(valore salvato)
new_arr[2][0].push(valore salvato)
però al momento non ho idea di come fare...avete suggerimenti?
tutta via mi sono dimenticato di tenere in considerazione che a un certo punto ci saranno un numero dispari di giocatori
per esempio se partono in 10 al primo round 5 ne verranno sconfitti
quindi nel secondo round ci saranno 5 giocatori rimasti in gara, infatti facendo una prova mi capita che a un certo punto un giocatore combatte 2 volte
ecco come si presenta "l'interfaccia di gioco"



come vedete nel round 2 "player2" combatte 2 volte
ecco la funzione che svolge tutti i combattimenti
piccola nota
ho un vettore di vettori new_arr che contiene i giocatori i personaggi e i livelli combattivi dei personaggi fatto più o meno così
var new_arr =
[
[giocatore 1,....... giocatoreN]
[personaggio1........personaggioN]
[poterePers1........poterePersN]
]
a un certo punto nel codice mischio new_arr[1] e new_arr[2] in maniera simultanea (per tenere uniti i personaggi e il loro "potere" così ogni giocatore si ritrova con un personaggio casuale ma vabbè quella parte funziona...e poi rimischio tutto per genereare gli incontri casuali
praticamente qui controllo se la lunghezza del new_arr[0] (dove ci sono i giocatori) è pari in tal caso faccio tutto tranquillamente,se però è dispari vorrei fare in modo che il primo elemento di new_arr
quindi
new_arr[0][0].shift()
new_arr[1][0].shift()
new_arr[2][0].shift()
venisse rimosso e salvato da qualche parte, svolgere i combattimenti normalmente ed aggiungere il valore salvato da qualche parte alla fine del for
new_arr[0][0].push(valore salvato)
new_arr[1][0].push(valore salvato)
new_arr[2][0].push(valore salvato)
matches = function(){ while(new_arr[0].length>1){ round += 1; var x = $("#r1"); var h2 = $('<h1>').html("----------Round---------- "+round); x.append(h2); if(new_arr[0].length %2 == 0){ console.log('iF LENGTH '+ (new_arr[0].length)) for(i = 0; i<new_arr[0].length;i= i+2){ var h1 = $('<h1>').html(new_arr[0][i] +" (Power Left) = " +new_arr[2][i] + " VS " + new_arr[0][i+1]+" (Power Left) = " +new_arr[2][i+1]); x.append(h1); if(new_arr[2][i]>=new_arr[2][i+1]){ new_arr[2][i] =new_arr[2][i] -new_arr[2][i+1]; new_arr[0][i+1] = "defeated"; new_arr[1][i+1] = "defeated"; new_arr[2][i+1] = "defeated"; var h1 = $('<h1>').html(new_arr[0][i] +" wins, Power left after this fight " +new_arr[2][i]); x.append(h1); }else{ new_arr[2][i+1] =new_arr[2][i+1] -new_arr[2][i]; new_arr[0][i] = "defeated"; new_arr[1][i] = "defeated"; new_arr[2][i] = "defeated"; var h1 = $('<h1>').html(new_arr[0][i+1] +" wins, Power left after this fight " +new_arr[2][i+1]); x.append(h1); } } for(var i = new_arr[0].length -1; i >= 0; i--){ var x = new_arr[0][i]; if(x=="defeated"){ new_arr[0].splice(i,1); new_arr[1].splice(i,1); new_arr[2].splice(i,1); } } shuffle2(new_arr); }else{ console.log('ELSE LENGTH '+ (new_arr[0].length)) for(i = 0; i<(new_arr[0].length)-1;i= i+2){ var x = $("#r1"); var h3 = $('<h1>').html(new_arr[0][i] +" (Power Left) = " +new_arr[2][i] + " VS " + new_arr[0][i+1]+" (Power Left) = " +new_arr[2][i+1]) x.append(h3); if(new_arr[2][i]>=new_arr[2][i+1]){ new_arr[2][i] =new_arr[2][i] -new_arr[2][i+1]; new_arr[0][i+1] = "defeated"; new_arr[1][i+1] = "defeated"; new_arr[2][i+1] = "defeated"; var h1 = $('<h1>').html(new_arr[0][i] +" wins, Power left after this fight " +new_arr[2][i]); x.append(h1); }else{ new_arr[2][i+1] =new_arr[2][i+1] -new_arr[2][i]; new_arr[0][i] = "defeated"; new_arr[1][i] = "defeated"; new_arr[2][i] = "defeated"; var h1 = $('<h1>').html(new_arr[0][i+1] +" wins, Power left after this fight " +new_arr[2][i+1]); x.append(h1); } for(var i = new_arr[0].length -1; i >= 0; i--){ var x = new_arr[0][i]; if(x=="defeated"){ new_arr[0].splice(i,1); new_arr[1].splice(i,1); new_arr[2].splice(i,1); } } } shuffle2(new_arr); } if(new_arr[0].length==1){ var x = $("#r1"); var h1 = $('<h1>').html(new_arr[0][0]+" wins this tournament with "+new_arr[2][0]+ " Power Left") x.append(h1); } } } matches();
però al momento non ho idea di come fare...avete suggerimenti?
Risposte
Lascio il link al progetto generale su github se volete vedere più nel dettaglio (non vado molto fiero del codice ma per ora questo è il mio meglio)
https://github.com/Yasulander/minigioco
https://github.com/Yasulander/minigioco
Quello dispari fallo combattere con uno fittizio che perde sempre …
Sembra funzionare,buona idea, grazie!
L'alternativa è quella di avere sempre un numero di giocatori che sia una potenza di due come 8 o 16.