Hallo Leutz,
also hab da ein Problem mit einem Spiel ich wollte Go bang ne art viergewinnt nur mit 5 steinen machen.
hab ich auch so weit gemacht nur funzt es net kann sich des jemand anschauen?
steh voll auf dem schlauch! ich habs in mehrere classen aufgeteilt (haben wir so gelernt) vlt. blick jemand durch!
kann auch das ganze prog mal zu mailen.
thx mal
mfg LittleWulf
also hab da ein Problem mit einem Spiel ich wollte Go bang ne art viergewinnt nur mit 5 steinen machen.
hab ich auch so weit gemacht nur funzt es net kann sich des jemand anschauen?
steh voll auf dem schlauch! ich habs in mehrere classen aufgeteilt (haben wir so gelernt) vlt. blick jemand durch!
Code:
package go_bang;
public class Spiel extends UI {
Spieler spieler1;
Spieler spieler2;
Spielbrett spielbrett;
UI ui;
public Spiel(){
spieler1=new Spieler();
spieler2=new Spieler();
spielbrett=new Spielbrett();
ui=new UI();
}
public void spielablauf(){
int zuege=0;
int Zeile;
int Spalte;
boolean zug;
while(zuege<=64){
Zeile=ui.getAktZeile();
Spalte=ui.getAktSpalte();
System.out.println("Einlesen");
zug=spieler1.Spielzug(spielbrett.brett, Zeile, Spalte);
if(zug=true){
spielbrett.steinSetzen(spielbrett.brett, Zeile, Spalte, 1);
ui.male(Zeile, Spalte, 1);
zuege=zuege+1;
if(spieler1.gewinner=true){
UI.ausgabeGewinn(1);
}
}
Zeile=ui.getAktZeile();
Spalte=ui.getAktSpalte();
zug=spieler2.Spielzug(spielbrett.brett, Zeile, Spalte);
if(zug=true){
spielbrett.steinSetzen(spielbrett.brett, Zeile, Spalte, 2);
ui.male(Zeile, Spalte, 2);
zuege=zuege+1;
if(spieler2.gewinner=true){
UI.ausgabeGewinn(2);
}
}
}
}
public static void main(String[] args) {
Spiel neu= new Spiel();
neu.spielablauf();
neu.ui.setSize(1005,575);
neu.ui.setLocation(1,100);
neu.ui.setTitle("Go Bang");
neu.ui.show();
}
}
package go_bang;
public class Spieler {
int [][] brett=new int [9][9];
int z =1;
public boolean gewinner;
Spielbrett sb;
int spieler;
public boolean Spielzug(int brett[][]/*Übergabe des Arays **/, int x, int y /*Übergabe der Steinposition**/)
/*(c)2005 by tobse **/
{
if (brett[x][y]>0)/*Abfrage ob Feld schon bestetzt ist**/
{
return(false);/*Wenn Feld besetz, dann übergebe "false"**/
}
else/*Wenn Feld frei, dann..()**/
{
if ( /*Abfragen ob in den 8 Feldern herum ein Stein liegt**/
(0< brett[x-1][y-1])||
(0< brett[x][y-1])||
(0< brett[x+1][y-1])||
(0< brett[x-1][y])||
(0< brett[x+1][y])||
(0< brett[x-1][y+1])||
(0< brett[x][y+1])||
(0< brett[x+1][y+1]))
{
return(true); /*Wenn im Umkreis ein Stein liegt übergebe "true"**/
sb.steinSetzen(brett,x,y,spieler);
}
else/*Wenn nicht...**/
{
return(false);/*übergebe "false"**/
}
}
}
public boolean gewinn(){
System.out.println("lol");
//brett[8][1]=1;//testspielbrett wird zum testen befüllt
//brett[7][2]=1;
//brett[6][3]=1;
//brett[5][4]=1;
//brett[4][5]=1;
boolean gewinner = false;
for(int yg=1;yg<=8;yg++){//Waagerechte wird überprüft
for( int xg=1;xg<=4;xg++){//yg ist der y wert der Felder
if(brett[xg][yg]==z){//xg ist der x wert der Felder
if(brett[xg+1][yg]==z){//überpruft erst in der ersten zeile von links nach rechts dann in der 2ten Zeile von links nach rechts
if(brett[xg+2][yg]==z){
if(brett[xg+3][yg]==z){
if(brett[xg+4][yg]==z){gewinner=true;}}}}}}}// wenn 5 in einer reihe sind hat der Spieler gewonnen
for(int xc=1;xc<=8;xc++){
for(int yc=1;yc<=4;yc++){
if(brett[xc][yc]==z){//Senkrechte wird überprüft
if(brett[xc][yc+1]==z){//yc ist der y wert der Felder
if(brett[xc][yc+2]==z){//xc ist der x wert der Felder
if(brett[xc][yc+3]==z){//überpruft erst in der ersten Spalte von oben nach unten dann in der 2ten Spalte von oben nach unten
if(brett[xc][yc+4]==z){gewinner=true;}}}}}}}
for(int yy=5; yy<=8; yy++){
for(int xy=1; xy<=4; xy++)
if(brett[xy][yy]==z){//Diagonale von links unten nach rechts oben wird überprüft
if(brett[xy+1][yy-1]==z){//yy ist der y wert der Felder
if(brett[xy+2][yy-2]==z){//xy ist der x wert der Felder
if(brett[xy+3][yy-3]==z){
if(brett[xy+4][yy-4]==z){gewinner=true;}}}}}}
for(int yx=1; yx<=4; yx++){
for(int xx=1; xx<=4; xx++)
if(brett[xx][yx]==z){//Diagonale von rechts oben nach links unten wird überprüft
if(brett[xx+1][yx+1]==z){//xx ist der x wert der Felder
if(brett[xx+2][yx+2]==z){
if(brett[xx+3][yx+3]==z){
if(brett[xx+4][yx+4]==z){gewinner=true;}}}}}}
System.out.println(gewinner+" X");
return (gewinner);// boolean variable gewinner wird zurückgegeben
}
}
package go_bang;
import java.awt.*;
import java.awt.event.*;
public class UI extends Frame implements ActionListener {
Canvas cv1;
MenuBar obermenu;
Menu inter;
MenuItem MSTART, MM, MEXIT;
Color hintergrund = new Color(0, 0, 128);
Button closeBttn;
Panel pOption;
CheckboxGroup chkoptiong;
Checkbox chkoption15, chkoption25;
TextField t1, t2;
Image img = getToolkit().getImage("hintergrund.gif");
Image weisserstein = getToolkit().getImage("weisserstein.gif");
Image schwarzerstein = getToolkit().getImage("schwarzerstein.gif");
Panel ph, p1;
Label lbx, lby, lbs;
static TextField tfx, tfy;
Button bts;
public int x;
public int y;
public UI() {
obermenu = new MenuBar();
setMenuBar(obermenu);
inter = new Menu("© Go Bang!");
obermenu.add(inter);
MSTART = new MenuItem("Start Go Bang!");
inter.add(MSTART);
MSTART.addActionListener(this);
MM = new MenuItem("Die Macher");
inter.add(MM);
inter.addActionListener(this);
inter.addSeparator();
MEXIT = new MenuItem("Exit");
inter.add(MEXIT);
MEXIT.addActionListener(this);
cv1 = new Canvas();
cv1.setBounds(1,1,1000,500);
cv1.setBackground(hintergrund);
Graphics g=cv1.getGraphics();
add(cv1);
setLayout(new BorderLayout());
ph = new Panel();
add(ph);
ph.setLayout(new BorderLayout());
p1 = new Panel();
add(p1, "South");
p1.setLayout(new GridLayout(3, 2));
lbx = new Label("x-Koordinate");
lbx.setBackground(Color.LIGHT_GRAY);
p1.add(lbx);
tfx = new TextField(6);
tfx.setBackground(Color.LIGHT_GRAY);
p1.add(tfx);
lby = new Label("y-Koordinate");
lby.setBackground(Color.LIGHT_GRAY);
p1.add(lby);
tfy = new TextField(6);
tfy.setBackground(Color.LIGHT_GRAY);
p1.add(tfy);
lbs = new Label("Eingaben Ok?");
lbs.setBackground(Color.LIGHT_GRAY);
p1.add(lbs);
bts = new Button("Absenden");
bts.setBackground(Color.LIGHT_GRAY);
bts.addActionListener(this);
p1.add(bts);
initComponents();
}
// public static void main(String[] args) {
// UI bang = new UI();
//bang.setSize(1005, 575);
//bang.setLocation(100, 100);
//bang.show();
//}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==bts){getAktZeile(); getAktSpalte(); };
String menu= e.getActionCommand();
if(menu.equals("Start Go Bang!")){hintergrund();}//erst bei start zeichnet er den hintergrund(mehrmals drücken)
if(menu.equals("Die Macher")){showcrew();}
if(menu.equals("Exit")){System.exit(0);}
if(e.getSource()==closeBttn){closeBttn.getParent().setVisible(false);}
}
public static void ausgabeGewinn(int i){
int gew = 0;
if(gew==1){ tfx.setText("Spieler 1 hat gewonnen");}
if(gew==2){ tfy.setText("Spieler 2 hat gewonnen");}
}
public void male(int y, int x, int spieler) {
Graphics g = cv1.getGraphics();
if (spieler == 1) {
g.drawImage(weisserstein, x, y, this);
//g.fillOval(r,r,x,y);
//g.setColor(Color.white);
}
if (spieler == 2) {
g.drawImage(schwarzerstein, x, y, this);
}
}
public void hintergrund() {
Graphics g=cv1.getGraphics();
g.drawImage(img,1,25,this);
}
public void initComponents() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
exitForm(ev);
}
});
}
private void exitForm(WindowEvent ev) {
System.exit(0);
}
public void showcrew(){
Dialog optionsdialog = new Dialog(this,"Die Macher",true);
closeBttn = new Button("schließen");
closeBttn.addActionListener(this);
optionsdialog.add(closeBttn,BorderLayout.SOUTH);
optionsdialog.setBounds(100,100,200,250);
pOption = new Panel();
pOption.setLayout(new GridLayout(6,1));
Label chiefs = new Label("Chefs : Fabian & Michael");
Label ablauf = new Label("Spielablauf : Johannes & Dennis");
Label spielzug = new Label("Spielzug : Tobias F. & Kami");
Label proof = new Label("Spielpruefung : Paul & Marcel");
Label brett = new Label("Spielbrett : Tobias H. & Nikita");
Label ui = new Label("User Interface : Dome & Uli");
pOption.add(chiefs);
pOption.add(ablauf);
pOption.add(spielzug);
pOption.add(proof);
pOption.add(brett);
pOption.add(ui);
optionsdialog.add(pOption);
optionsdialog.show();
}
public int getAktZeile() {
int y = Integer.parseInt(tfy.getText());
return y;
}
public int getAktSpalte() {
int x = Integer.parseInt(tfx.getText());
return x;
}
}
package go_bang;
class Spielbrett {
int [][] brett;
int x; /*Zeile*/
int y; /*Spalte*/
int z = 0; /*Übergabe ob Spieler 1 oder Spieler 2*/
public Spielbrett(){
brett = new int[10][10];
for(x=0; x<=9; x++){
for(y=0; y<=9; y++)
brett[x][y]=0;
}
}
public int[][] getSpielfläche(){ /*Übergibt brett an UI*/
return brett;
}
public void steinSetzen(int brett[][], int x, int y, int z){ /*Prüft ob Spieler 1 oder Spieler2 setzt
und schreibt das in das array*/
if(z == 1){
brett [x][y]=1;
}
if(z == 2){
brett [x][y]=2;
}
}
}
thx mal
mfg LittleWulf