[Anfang] Aufbauspiel

Allgrind

Mitglied
Hey Ho,

ich habe eben mal angefangen ein bissle mit Java zu spielen, da kam mir die Idee eine Art SimCity nach zubauen, aber erstmal nur Konsolenorientiert,..

Soweit klappt auch alles ganz super,..nur ich möchte alles in die Konsole eingeben,...
und nicht wie es jetzt ist,...jetzt gebe ich alle befehler nur im Java-Editor ein,...

Besteht die möglichkeit das ich diese Befehle wie " Baue ein Haus" eintippe und er führt dann den Befehl aus stadt.get...

usw.


unbenanntzt.png


[Java]
public class spielfäche {

public static void main(String[] args) {

wirtschaft stadt = new wirtschaft ();

System.out.println("Spielfeld:");
System.out.println();
System.out.println();

stadt.setEuro(10050);
stadt.setMiete(20);
stadt.getBaueKraftwerk();


stadt.getEuro();
stadt.getHäuser();
stadt.getKraftwerk();
stadt.getMenschen();
stadt.getMiete();
stadt.getStrom();

System.out.println("-----------------------");

stadt.getBauen();

System.out.println("-----------------------");

stadt.getEuro();
stadt.getHäuser();
stadt.getKraftwerk();
stadt.getMenschen();
stadt.getMiete();
stadt.getStrom();
}
}
[/Java]

[Java]
public class wirtschaft {

// Anfang Attribute
private int Menschen;
private int Häuser;
private int Euro;
private int bauen;
private int miete;
private int strom;
private int Kraftwerk;
private int baueKraftwerk;
// Ende Attribute



wirtschaft (){

}

public wirtschaft (int Menschen, int Euro, int Häuser, int miete){
this.Menschen=Menschen;
this.Euro=Euro;
this.Häuser=Häuser;
this.miete=miete;

}


public int getMenschen() {
System.out.println("Menschen "+Menschen);
return Menschen;
}
public void setMenschen(int Menschen) {
this.Menschen = Menschen;
}



public int getHäuser() {
System.out.println("Häuser "+Häuser);
return Häuser;
}
public void setHäuser(int Häuser) {
this.Häuser = Häuser;
}


public int getEuro() {
System.out.println("Euro "+Euro+" Euro");
return Euro;
}
public void setEuro(int Euro) {
this.Euro = Euro;
}


public int getBauen() {

if ( (Euro >=1000) & (strom>=50)){
Häuser=Häuser+1;
Menschen=Menschen+5;
Euro=Euro-1000;
strom=strom-50;
System.out.println("Es ist ein Haus gebaut wurden");
}


else{
System.out.println("Es konnte kein Haus gebaut werden");
}
return bauen;
}


public int getMiete() {
System.out.println("Miete "+miete+" Euro");
return miete;
}

public void setMiete(int miete) {
this.miete = miete;
}


public int getStrom() {
System.out.println("Strom: "+ strom+" KW");

return strom;
}




public int getKraftwerk() {
System.out.println("Kraftwerk "+Kraftwerk);

return Kraftwerk;
}


public int getBaueKraftwerk() {
Kraftwerk=Kraftwerk+1;
Euro=Euro-5000;
strom=strom+500;
return baueKraftwerk;
}

}
[/Java]



viele Grüße

Joe
 
Zuletzt bearbeitet:

Allgrind

Mitglied
nen Scanner aus System.in liefert die it read next line, das zuletzt eingegebene inner console (blockt aber bis eine enngabe erfolgt ist)

Morgen

meinst du das so?

[Jave]
import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
int eingabe = scanner.nextInt();
[/Java]

klappt auch soweit nur wenn ich die befehle eintippe, kommt eine Fehlermeldung,...!!!

viele grüße
 

eRaaaa

Top Contributor
Naja du liest ein Integer ein, da kannst du dann schlecht "baue ein Haus" eingeben :)
Wieso machst du dir nicht eine Art Menü?

Code:
1) Bauen
2) Kontostand
3) usw.

Evtl. mit Untermenüs ?
 

Allgrind

Mitglied
Naja du liest ein Integer ein, da kannst du dann schlecht "baue ein Haus" eingeben :)
Wieso machst du dir nicht eine Art Menü?

Code:
1) Bauen
2) Kontostand
3) usw.

Evtl. mit Untermenüs ?

Hey
das hört sich gut an,...habe aber noch nie was von einem "art-menü" gehört ^^

das muss ich jetzt mal suchen,...und mir angucken,...!!
Gibt es dazu gute Anleitungen!?

viele grüße
 

eRaaaa

Top Contributor
Naja, ich meinte etwas in der Art wie:

Java:
    public void menu() {
	System.out.println("Wähle:");
	System.out.println("1.) Baue");
	System.out.println("2.) ....");
	System.out.println("3.) ....");
	System.out.println("4.) Beenden");
	menuAuswahl(scanner.nextInt());
    }

    private void menuAuswahl(int auswahl) {
	switch (auswahl) {
	case 1:
	    System.out.println("es wird ein Haus gebaut"); // hier halt ein entsprechender Methodenaufruf
	    break;
	case 2:
	    System.out.println("....");
	    break;
	default:
	    System.out.println("Falsche Wahl...zurück ins Menu");
	    break;
	}
	menu();
    }

Ob es dafür ne Anleitung gibt bezweifele ich , aber man weiß ja nie :D
 

Allgrind

Mitglied
Naja, ich meinte etwas in der Art wie:

Java:
    public void menu() {
	System.out.println("Wähle:");
	System.out.println("1.) Baue");
	System.out.println("2.) ....");
	System.out.println("3.) ....");
	System.out.println("4.) Beenden");
	menuAuswahl(scanner.nextInt());
    }

    private void menuAuswahl(int auswahl) {
	switch (auswahl) {
	case 1:
	    System.out.println("es wird ein Haus gebaut"); // hier halt ein entsprechender Methodenaufruf
	    break;
	case 2:
	    System.out.println("....");
	    break;
	default:
	    System.out.println("Falsche Wahl...zurück ins Menu");
	    break;
	}
	menu();
    }

Ob es dafür ne Anleitung gibt bezweifele ich , aber man weiß ja nie :D

Hey,

wo müsste ich das denn einbauen?

Eigentlich in die Spieldatei,...aber das klappt nicht so wie ich das will ./


[Java]
public void menu() {
System.out.println("Wähle:");
System.out.println("1.) stadt.getBaue"); //<-wäre das so richtig
[/Java]

unten beim Switch gibt der ja nur dazu eine Antwort...

viele grüße
 
Zuletzt bearbeitet:

Steev

Bekanntes Mitglied
Moin,

vieleicht suchst du so etwas?

[Java]/**
* @version 1.0
* @author Steev
*/
public final class IOTools {
private static void handleException(Exception e) {
System.out.println("An error occurs while consoleinput:\n" + e);
System.out.print("Please retry the input: ");
}

public static char readChar() {
return readChar("");
}

public static char readChar(String output) {
System.out.print(output);
char c = 0;
try {
c = (char) System.in.read();
} catch (Exception e) {
handleException(e);
return readChar();
}
return c;
}

public static String readString() {
return readString("");
}

public static String readString(String output) {
System.out.print(output);
char c = 0;
String line = "";
while (c != '\n') {
c = readChar();
if (c != '\n' && c != '\r')
line = line.concat("" + c);
}
return line;
}

public static double readDouble() {
return readDouble("");
}

public static double readDouble(String output) {
String s = readString(output);
double d = 0.;
try {
d = Double.parseDouble(s);
} catch (Exception e) {
handleException(e);
return readDouble();
}
return d;
}

public static int readInteger() {
return readInteger("");
}

public static int readInteger(String output) {
String s = readString(output);
int n = 0;
try {
n = Integer.parseInt(s);
} catch (Exception e) {
handleException(e);
return readInteger();
}
return n;
}

public static float readFloat() {
return readFloat("");
}

public static float readFloat(String output) {
String s = readString(output);
float f = 0.f;
try {
f = Float.parseFloat(s);
} catch (Exception e) {
handleException(e);
return readFloat();
}
return f;
}

public static long readLong() {
return readLong("");
}

public static long readLong(String output) {
String s = readString(output);
long l = 0l;
try {
l = Long.parseLong(s);
} catch (Exception e) {
handleException(e);
return readLong();
}
return l;
}

public static short readShort() {
return readShort("");
}

public static short readShort(String output) {
String s = readString(output);
short h = 0;
try {
h = Short.parseShort(s);
} catch (Exception e) {
handleException(e);
return readShort();
}
return h;
}

public static byte readByte() {
return readByte("");
}

public static byte readByte(String output) {
String s = readString(output);
byte b = 0;
try {
b = Byte.parseByte(s);
} catch (Exception e) {
handleException(e);
return readByte();
}
return b;
}

public static boolean readBoolean() {
return readBoolean("");
}

public static boolean readBoolean(String output) {
String s = readString(output);
boolean b = false;
try {
b = Boolean.parseBoolean(s);
} catch (Exception e) {
handleException(e);
return readBoolean();
}
return b;
}
}[/Java]

Jedermann darf es verwenden, ich gebe das Programm zur Vereinfachung an (Nachhilfe-)schüler aus.

Verwenden kannst du es für dein Problem so:
[Java]
System.out.println("Was soll gebaut werden?");
System.out.println("A: Haus");
System.out.println("B: Fabrik");
System.out.println("C: Straße");

char c = IOTools.readChar("Bitte eingeben: ");

switch (c) {
case 'A':
case 'a':
buildHouse();
break;
case 'B':
case 'b':
// usw...
break;
}
[/Java]

PS:
System.out.println("1.) stadt.getBaue"); //<-wäre das so richtig

Nein:
[Java]System.out.println("1.) " + stadt.getBaue()); // Das ist richtig!

Gruß
Steev
 
Zuletzt bearbeitet:

Allgrind

Mitglied
Moin,

vieleicht suchst du so etwas?

[Java]/**
* @version 1.0
* @author Steev
*/
public final class IOTools {
private static void handleException(Exception e) {
System.out.println("An error occurs while consoleinput:\n" + e);
System.out.print("Please retry the input: ");
}

public static char readChar() {
return readChar("");
}

public static char readChar(String output) {
System.out.print(output);
char c = 0;
try {
c = (char) System.in.read();
} catch (Exception e) {
handleException(e);
return readChar();
}
return c;
}

public static String readString() {
return readString("");
}

public static String readString(String output) {
System.out.print(output);
char c = 0;
String line = "";
while (c != '\n') {
c = readChar();
if (c != '\n' && c != '\r')
line = line.concat("" + c);
}
return line;
}

public static double readDouble() {
return readDouble("");
}

public static double readDouble(String output) {
String s = readString(output);
double d = 0.;
try {
d = Double.parseDouble(s);
} catch (Exception e) {
handleException(e);
return readDouble();
}
return d;
}

public static int readInteger() {
return readInteger("");
}

public static int readInteger(String output) {
String s = readString(output);
int n = 0;
try {
n = Integer.parseInt(s);
} catch (Exception e) {
handleException(e);
return readInteger();
}
return n;
}

public static float readFloat() {
return readFloat("");
}

public static float readFloat(String output) {
String s = readString(output);
float f = 0.f;
try {
f = Float.parseFloat(s);
} catch (Exception e) {
handleException(e);
return readFloat();
}
return f;
}

public static long readLong() {
return readLong("");
}

public static long readLong(String output) {
String s = readString(output);
long l = 0l;
try {
l = Long.parseLong(s);
} catch (Exception e) {
handleException(e);
return readLong();
}
return l;
}

public static short readShort() {
return readShort("");
}

public static short readShort(String output) {
String s = readString(output);
short h = 0;
try {
h = Short.parseShort(s);
} catch (Exception e) {
handleException(e);
return readShort();
}
return h;
}

public static byte readByte() {
return readByte("");
}

public static byte readByte(String output) {
String s = readString(output);
byte b = 0;
try {
b = Byte.parseByte(s);
} catch (Exception e) {
handleException(e);
return readByte();
}
return b;
}

public static boolean readBoolean() {
return readBoolean("");
}

public static boolean readBoolean(String output) {
String s = readString(output);
boolean b = false;
try {
b = Boolean.parseBoolean(s);
} catch (Exception e) {
handleException(e);
return readBoolean();
}
return b;
}
}[/Java]

Jedermann darf es verwenden, ich gebe das Programm zur Vereinfachung an (Nachhilfe-)schüler aus.

Verwenden kannst du es für dein Problem so:
[Java]
System.out.println("Was soll gebaut werden?");
System.out.println("A: Haus");
System.out.println("B: Fabrik");
System.out.println("C: Straße");

char c = IOTools.readChar("Bitte eingeben: ");

switch (c) {
case 'A':
case 'a':
buildHouse();
break;
case 'B':
case 'b':
// usw...
break;
}
[/Java]

PS:


Nein:
[Java]System.out.println("1.) " + stadt.getBaue()); // Das ist richtig!

Gruß
Steev

wunderbar danke das klappt :)

Edit:

Wie kann ich einstellen das ich nicht nur a oder b bei dem Case einstellen kann sondern Haus ,..das ich in der Konsole Haus eintippe und er baut mir ein Haus?

Ich würde das gerne in einer Schleife spielen,...

heißt,...
Informationen
Bauen
Informationen
...
...

aber durch das Break; im switch kann ich keine Schleife benutzen :/

viele grüße
 
Zuletzt bearbeitet:

rogerbuecker

Mitglied
Hey bin total neu ( hier und im Thema Java Programmierung)

Finde die Idee hier super und habe mir mal erlaubt ein bischen was zu verändern bzw. zu erweitern

Mein neues Hauptmenü :

Was soll gebaut werden?
1: Haus
2: Name
3: Status

1 Baut ein Haus
2 Gibt den von mir neu eingefügten StadtNamen aus
3 Zeigt eine Übersicht

außerdem kommt man nach jeder Aktion wieder ins Hauptmenü....

Falls jemand Interesse hat mit mir zusammen weiter zu Programmieren ist meine Email Adresse roger.buecker@googlemail.com

Und jetzt mein veränderter Quellcode

spielfläche.java
Java:
import java.io.*;

public class spielfäche {
 
  public static void main(String[] args) throws IOException {
 
   wirtschaft stadt = new wirtschaft ();
 
   System.out.println("Spielfeld:");
   System.out.println();
   System.out.println();
   
   stadt.setEuro(10050);
   stadt.setMiete(20);
   stadt.getBaueKraftwerk();
   stadt.setName("Rogerhausen");
 
   int x;
   x=1;  
   while (x <= 100) {   

   System.out.println();
   System.out.println("Was soll gebaut werden?");
   System.out.println("1: Haus");
   System.out.println("2: Name");
   System.out.println("3: Status");
    
   BufferedReader bin = new BufferedReader(
           new InputStreamReader(System.in));

   int eingabe = bin.read();
   
  
   switch (eingabe) {
   case '1':
	   System.out.println("-----------------------");
	   stadt.getBauen();
	   System.out.println("-----------------------");
   break;
   
   case '2':
	   System.out.println("-----------------------");
	   stadt.getName();
	   System.out.println("-----------------------");
   break;
   
   case '3':
	   System.out.println("-----------------------");
	   stadt.status();
	   System.out.println("-----------------------");
   break;
 }
   
   }
    
  }
}
wirtschaft.java
Java:
public class wirtschaft {
 
  // Anfang Attribute
  private int Menschen;
  private int Häuser;
  private int Euro;
  private int bauen;
  private int miete;
  private int strom;
  private int Kraftwerk;
  private int baueKraftwerk;
  private String StadtName;
  // Ende Attribute
 
 
 
  wirtschaft (){
 
  }
  
  public wirtschaft (int Menschen, int Euro, int Häuser, int miete){
    this.Menschen=Menschen;
    this.Euro=Euro;
    this.Häuser=Häuser;
    this.miete=miete;
 
  }
 
 
  public int getMenschen() {
    System.out.println("Menschen   "+Menschen);
    return Menschen;
  }
  
  public String getName() {
	    System.out.println("Stadtname   "+StadtName);
	    return StadtName;
	  }

  public void setName(String Name) {
	    this.StadtName = Name;
	  }
  
  
  public void setMenschen(int Menschen) {
    this.Menschen = Menschen;
  }
  
 
 
  public int getHäuser() {
    System.out.println("Häuser     "+Häuser);
    return Häuser;
  }
  public void setHäuser(int Häuser) {
    this.Häuser = Häuser;
  }
 
 
  public int getEuro() {
    System.out.println("Euro       "+Euro+" Euro");
    return Euro;
  }
  public void setEuro(int Euro) {
    this.Euro = Euro;
  }
 
 
  public int getBauen() {
 
    if ( (Euro >=1000) & (strom>=50)){
     Häuser=Häuser+1;
     Menschen=Menschen+5;
     Euro=Euro-1000;
     strom=strom-50;
     System.out.println("Es ist ein Haus gebaut wurden");
    }
 
    
    else{
      System.out.println("Es konnte kein Haus gebaut werden");
    }
    return bauen;
  }
 
 
  public int getMiete() {
    System.out.println("Miete      "+miete+" Euro");
    return miete;
  }
 
  public void setMiete(int miete) {
    this.miete = miete;
  }
 
 
  public int getStrom() {
     System.out.println("Strom:     "+ strom+" KW");
 
    return strom;
  }
 

  public int getKraftwerk() {
   System.out.println("Kraftwerk  "+Kraftwerk);
  
    return Kraftwerk;
  }
 
 
  public int getBaueKraftwerk() {
    Kraftwerk=Kraftwerk+1;
    Euro=Euro-5000;
    strom=strom+500;
    return baueKraftwerk;
  }
  
  public void status() {
	   this.getEuro();
	   this.getHäuser();
	   this.getKraftwerk();
	   this.getMenschen();
	   this.getMiete();
	   this.getStrom();
	  }
 
}
 

hdi

Top Contributor
Ich schieb gleich noch ne ähnlich geartete Anmerkung hinterher :D

Java:
public int getBaueKraftwerk() {
    Kraftwerk=Kraftwerk+1;
    Euro=Euro-5000;
    strom=strom+500;
    return baueKraftwerk;
  }

Das ist gar nicht schön. Ein Getter liefert per Definition nur etwas zurück und führt keine Seiteneffekte aus. Durch sowas baut man sich (wenn es dann später etwas komplexer wird) sehr schnell Bugs ein.
Also mach ne Methode void baueKraftwerk() und eine andere Methode int getKraftwerk().
(Wobei ich auch diesen Namen etwas seltsam finde, gemeint ist doch eig. eher getKraftwerkAnzahl() oder?)
 

eRaaaa

Top Contributor
Dann mach ich mal direkt weiter *g*

außerdem kommt man nach jeder Aktion wieder ins Hauptmenü....

Wieso hast du das Menü in eine while-Schleife (x <=100 ) verpackt? Auf den ersten Blick wusste ich gar nicht was du damit machen willst, wollte schon antworten, dass das Menü dann aber nur maximal 100 mal angezeigt wird, habe dann gesehen dass du x gar nicht erhöhst, was man ja so nicht erwarten würde...( bei while(true) würde man es direkt erkennen, ist aber evtl. auch unschön..kannst ja nen boolean anlegen oder so und dann im Menü noch einen Punkt "Beenden" einführen, wo dann der boolean gesetzt/verändert wird...oder irgendwie so ähnlich ^^
In jedem Schleifendurchgang einen neuen Reader zu erstellen muss auch nicht unbedingt sein.
 
Zuletzt bearbeitet:

rogerbuecker

Mitglied
Hey allerseits erstmal danke für die guten Tipps,

das mit dem getKraftwerk() und so habe ich vom ersteller übernommen,
habe aber mitlerweile schon so viele neue Methoden hinzugefügt das ich mir auch um die benennung einmal gedanken machen sollte.

Und das mit dem boolean zum beenden finde ich so gut das ich das jetzt direkt einmal einbauen werde.

Werde nicht jede änderung hier posten aber immer mal wieder ein Update machen.

LG Roger
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D wieder einer von anfang an. Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen


Oben