PDA

View Full Version : [Java] Problema variabili


agente mm8
06-11-2008, 18:08
SCUSATE TITOLO SBAGLIATO
_____________________________________

Salve a tutti! Mi è venuta l'idea di creare un simulatore di combattimenti: per ora non ha grafica, il giocatore può scegliere se attaccare, lanciare una magia (max. 5 magie), curarsi (max 3 volte), e scappare, quindi abbandonare la partita.
Vi posto il codice:
package combatsimulator;

/**
* @author agente mm8
*/
import java.util.Scanner;
import java.util.Random;
public class Main{

public static int magie, cure, livello;
public static int magie2, cure2; //per avversario
public static Scanner sc;
public static int MyLife, YourLife;
public static boolean turno;

public static void main(String args[]) {
sc = new Scanner(System.in);

magie = 5;
cure = 3;
livello = 1;

magie2 = 5;
cure2 = 3;

MyLife = 100;
YourLife = 100;

turno = true;

System.out.println("Created by Michele Marolla");
System.out.println("**********************************");
System.out.println(" Benvenuto in Combat Simulator");
System.out.println("**********************************");
System.out.println();
System.out.println("Livello: " + String.valueOf(livello));
informazioni();
System.out.println("Scrivi la tua scelta:\n1) Attacca\n2)Lancia Magia\n3) Usa pozione curativa\n4) Scappa");
while(MyLife > 0 && turno == true){
input();
avversario();
informazioni();
}
}

public static void informazioni(){
System.out.println();
System.out.println("Vita: " + String.valueOf(MyLife));
System.out.println("Vita Avversario: " + String.valueOf(YourLife));
System.out.println("Magie Disponibili: " + String.valueOf(magie));
System.out.println("Pozioni Curative Rimaste: " + String.valueOf(cure));
System.out.println();
}

public static void input(){
if(turno){
int scelta = sc.nextInt();
if(scelta == 1){
System.out.println("Giocatore attacca");
YourLife -= 10;
turno = false;
}else if(scelta == 2){
if(magie > 0){
System.out.println("Giocatore lancia magia");
YourLife -= 25;
magie--;
turno = false;
}
}else if(scelta == 3){
if(cure > 0){
System.out.println("Giocatore usa pozione curativa");
MyLife += 30;
cure--;
turno = false;
}
}else if(scelta == 4){
System.out.println("Mi dispiace, hai perso!");
System.out.println("Premere invio per uscire");
String x = sc.next();
System.exit(0);
}else{
System.out.println("Comando non riconosciuto: riprovare");
input();
}
}
}

public static void avversario(){
Random r = new Random();
int scelta = r.nextInt(2) + 1;

if(scelta == 1){
System.out.println("Avversario attacca");
MyLife -= 10;
turno = true;
}else if(scelta == 2){
if(magie2 > 0){
System.out.println("Avversario lancia magia");
MyLife -= 25;
magie2--;
turno = true;
}else{avversario();}
}else if(scelta == 3){
if(cure2 > 0){
System.out.println("Avversario usa pozione curatrice");
YourLife += 30;
cure--;
turno = true;
}else{avversario();}
}
}

}


Ho inserito il while per evitare che il metodo input() andasse avanti senza che il giocatore avesse inserito la scelta, ma ancora ora...
Come posso fare???:confused:

agente mm8
07-11-2008, 07:30
up

agente mm8
08-11-2008, 12:46
up!!!

Don[ITA]
08-11-2008, 14:12
Scusa dove sarebbe il problema?
L'ho appena provato e funziona perfettamente :mbe: a parte che qui

System.out.println("Premere invio per uscire");
String x = sc.next();
System.exit(0);

premendo invio giustamente non accade nulla visto che non c'è nessun input :D
Potresti mettere nel while anche
System.out.println("Scrivi la tua scelta:\n1) Attacca\n2)Lancia Magia\n3) Usa pozione curativa\n4) Scappa");
per comodità :)

agente mm8
08-11-2008, 19:09
Risolto, ho seguito il tuo suggerimento nel while, e poi ho cambiato
int scelta = sc.nextInt();
in
int scelta = Integer.valueOf(sc.next()); e ora funge tutto a meraviglia.
Poi devo aggiustare quando termina il programma.
Grazie 1000.