Hi,
also zunächst mal: Ich habe lange bei google gesucht (vllt. bin ich ein schlechter sucher) und nichts passendes gefunden.
Also ich habe 4-Gewinnt mit Oberfläche programmiert. War ziemlich aufwendig. Habe es mir auch höchst wahrscheinlich komplizierter gemacht als es ist. Tut aber ja auch nichts zur Sache, das Prog läuft.
Ich würde es bloß gerne als Applet auf meine Homepage tun, damit auch andere den Spaß an diesem Spiel genießen können
Ich habe oft gelesen, dass dazu die Klasse von der Klasse Applets erben muss. Geht aber nicht, weil meine schon von der Klasse "Frame" erbt.
Hab einfach keine ahunng
vllt. kann es mir jmd. mit ein paar wenigen schritten machen oder erklären.
Danke im Voraus!
PS: Quellcode könnt ihr gerne verwenden
(ist nicht der beste, ich weiß
)
also zunächst mal: Ich habe lange bei google gesucht (vllt. bin ich ein schlechter sucher) und nichts passendes gefunden.
Also ich habe 4-Gewinnt mit Oberfläche programmiert. War ziemlich aufwendig. Habe es mir auch höchst wahrscheinlich komplizierter gemacht als es ist. Tut aber ja auch nichts zur Sache, das Prog läuft.
Ich würde es bloß gerne als Applet auf meine Homepage tun, damit auch andere den Spaß an diesem Spiel genießen können
Ich habe oft gelesen, dass dazu die Klasse von der Klasse Applets erben muss. Geht aber nicht, weil meine schon von der Klasse "Frame" erbt.
Hab einfach keine ahunng
Danke im Voraus!
PS: Quellcode könnt ihr gerne verwenden
Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.swing.*;
import javax.swing.event.*;
public class viergewinntgraphik extends Frame implements ActionListener {
public static char felder[][] = new char[6][7];
public static int reihe;
public static int spieler = 1;
public static String spielername1 = "Spieler 1", spielername2 = "Spieler 2";
static boolean win = false;
static int unentschieden = 0;
static int spieler1 = 0;
static int spieler2 = 0;
//***********************GRAFIKEN ERSTELLEN*************************************************
static Button put1, put2, put3, put4, put5, put6, put7, nochmalbtn;
static Label spielerlbl, statistiklbl, spieler1lbl, spieler2lbl, unentschiedenlbl;
static TextField name1lbl, name2lbl;
public viergewinntgraphik() {
setLayout(null);
spielerlbl = new Label("Spieler 1, sie sind an der Reihe!");
statistiklbl = new Label("Statistiken: ");
spieler1lbl = new Label(spielername1 + ": " + spieler1);
spieler2lbl = new Label(spielername2 + ": " + spieler2);
name1lbl = new TextField("Name Spieler1");
name2lbl = new TextField("Name Spieler2");
unentschiedenlbl = new Label("Unentschieden: " + unentschieden);
put1 = new Button("Put");
put2 = new Button("Put");
put3 = new Button("Put");
put4 = new Button("Put");
put5 = new Button("Put");
put6 = new Button("Put");
put7 = new Button("Put");
nochmalbtn = new Button("Nochmal?");
spielerlbl.setForeground(Color.red);
spieler1lbl.setForeground(Color.red);
spieler2lbl.setForeground(Color.blue);
//setze Koordinaten
name1lbl.setBounds(350, 715, 200, 30);
name2lbl.setBounds(350, 755, 200, 30);
spielerlbl.setBounds(105, 725, 300, 50);
statistiklbl.setBounds(605, 705, 200, 20);
spieler1lbl.setBounds(605, 725, 200, 20);
spieler2lbl.setBounds(605, 750, 200, 20);
unentschiedenlbl.setBounds(605, 775, 200, 20);
put1.setBounds(105, 50, 95, 40);
put2.setBounds(205, 50, 95, 40);
put3.setBounds(305, 50, 95, 40);
put4.setBounds(405, 50, 95, 40);
put5.setBounds(505, 50, 95, 40);
put6.setBounds(605, 50, 95, 40);
put7.setBounds(705, 50, 95, 40);
nochmalbtn.setBounds(205, 725, 100, 50);
//registriere Buttons
add(name1lbl);
add(name2lbl);
add(spielerlbl);
add(statistiklbl);
add(spieler1lbl);
add(spieler2lbl);
add(unentschiedenlbl);
add(put1);
add(put2);
add(put3);
add(put4);
add(put5);
add(put6);
add(put7);
add(nochmalbtn);
put1.addActionListener(this);
put2.addActionListener(this);
put3.addActionListener(this);
put4.addActionListener(this);
put5.addActionListener(this);
put6.addActionListener(this);
put7.addActionListener(this);
nochmalbtn.addActionListener(this);
put1.setActionCommand("eins");
put2.setActionCommand("zwei");
put3.setActionCommand("drei");
put4.setActionCommand("vier");
put5.setActionCommand("fünf");
put6.setActionCommand("sechs");
put7.setActionCommand("sieben");
nochmalbtn.setActionCommand("nochmal");
spielerlbl.setVisible(false);
nochmalbtn.setLabel("Ok");
buttonsschalten(0);
}
public void actionPerformed(ActionEvent e) { //BUTTONEVENTS******************
if (e.getActionCommand().equals("nochmal")) {
if (nochmalbtn.getLabel().equals("Ok")) { //Namenseingabe
spielername1 = name1lbl.getText();
spielername2 = name2lbl.getText();
spieler1lbl.setText(spielername1 + ": ");
spieler2lbl.setText(spielername2 + ": ");
name1lbl.setVisible(false);
name2lbl.setVisible(false);
spielerlbl.setVisible(true);
spielerlbl.setText(spielername1 + ", Sie sind an der Reihe");
buttonsschalten(1);
nochmalbtn.setVisible(false);
nochmalbtn.setLabel("Nochmal?");
nochmalbtn.setBounds(450, 725, 100, 50);
} else { //Neues Spiel wird vorbereitet
buttonsschalten(1);
spielerlbl.setForeground(Color.red);
win = false;
spieler = 1;
//Spielfelderstellen;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
felder[i][j] = '|';
}
}
repaint(); //leeres Spielfeld neu zeichnen
nochmalbtn.setVisible(false);
spielerlbl.setText(spielername1 + ", Sie sind an der Reihe.");
}
} else {
if (e.getActionCommand().equals("eins")) {
reihe = 1;
}
if (e.getActionCommand().equals("zwei")) {
reihe = 2;
}
if (e.getActionCommand().equals("drei")) {
reihe = 3;
}
if (e.getActionCommand().equals("vier")) {
reihe = 4;
}
if (e.getActionCommand().equals("fünf")) {
reihe = 5;
}
if (e.getActionCommand().equals("sechs")) {
reihe = 6;
}
if (e.getActionCommand().equals("sieben")) {
reihe = 7;
}
boolean besetzt = false;
boolean gesetzt = false;
int j = reihe - 1;
for (int i = 5; i >= 0; i--) {
besetzt = false;
if (felder[i][j] == '|') { //wenn Feld Leer
switch (spieler) {
case 1:
felder[i][j] = 'R'; //setze R
System.out.println(spielername1 + ", setzt roten Spielstein in Reihe " + (j + 1));
if (i == 0) {
besetzt = true;
}
break;
case 2:
felder[i][j] = 'B'; //setze B
System.out.println(spielername2 + " setzt blauen Spielstein in Reihe " + (j + 1));
if (i == 0) {
besetzt = true;
}
break;
}//switch
gesetzt = true;
} //ende if abfrage
if (gesetzt == true) {
break;
}
} //ende for schleife
if (besetzt == true) {
switch (reihe) {
case 1:
put1.setEnabled(false);
break;
case 2:
put2.setEnabled(false);
break;
case 3:
put3.setEnabled(false);
break;
case 4:
put4.setEnabled(false);
break;
case 5:
put5.setEnabled(false);
break;
case 6:
put6.setEnabled(false);
break;
case 7:
put7.setEnabled(false);
break;
}
}
////****Abfragen nach Ergebnisende!
if (pruefen().compareTo("voll") == 0) {
System.out.println("Spielfeld ist voll, niemand hat gewonnen!");
spielerlbl.setText("Ein Unentschieden!");
win = true;
unentschieden += 1;
}
if (pruefen().compareTo("spieler1") == 0) {
System.out.println(spielername1 + " hat das Spiel gewonnen");
spielerlbl.setText(spielername1 + " gewinnt!");
win = true;
spieler1 += 1;
}
if (pruefen().compareTo("spieler2") == 0) {
System.out.println(spielername2 + " hat das Spiel gewonnen");
spielerlbl.setText(spielername2 + " gewinnt!");
win = true;
spieler2 += 1;
}
if (win == true) {
buttonsschalten(0);
System.out.println(spielername1 + "(Rot) hat bisher " + spieler1 + " mal gewonnen");
spieler1lbl.setText(spielername1 + ": " + spieler1);
System.out.println();
System.out.println(spielername2 + "(Blau) hat bisher " + spieler2 + " mal gewonnen");
spieler2lbl.setText(spielername2 + ": " + spieler2);
System.out.println();
System.out.println("Es gab bisher " + unentschieden + " unentschieden");
unentschiedenlbl.setText("Unentschieden: " + unentschieden);
System.out.println();
nochmalbtn.setVisible(true);
repaint();
} else { //wenn nicht zuende
repaint();
if (spieler == 1) {
spieler = 2; //spielerwechsel
spielerlbl.setText(spielername2 + ", Sie sind an der Reihe");
spielerlbl.setForeground(Color.blue);
} else if (spieler == 2) {
spieler = 1;
spielerlbl.setText(spielername1 + ", Sie sind an der Reihe");
spielerlbl.setForeground(Color.red);
}
}
}
}
public void paint(Graphics g) {
//*************Viergewinntfeldzeichnen!***********************************
g.setColor(Color.black);
for (int i = 100; i <= 800; i += 100) {
g.drawLine(i, 700, i, 100);
}
for (int i = 700; i >= 0; i -= 100) {
g.drawLine(800, i, 100, i);
}
for (int i = 100; i < 800; i+=100) {
g.drawArc(i, 100, 100, 10, 0, 360);
}
//***************Spielsteine setzen**************************************
for (int i = 0; i < 6; i++) {
for (int k = 0; k < 7; k++) { //geht alle Felder einmal durch!
if (felder[i][k] == 'R') { //wenn RoterStein
g.setColor(Color.red);
g.fillArc((k + 1) * 100, (i + 1) * 100, 100, 100, 0, 360);
} //ende Rot
else if (felder[i][k] == 'B') {//wenn BlauerStein
g.setColor(Color.blue);
g.fillArc((k + 1) * 100, (i + 1) * 100, 100, 100, 0, 360);
}//ende Blau
}
}
}
public static void buttonsschalten(int binaer) {
switch (binaer) {
case 0:
put1.setEnabled(false);
put2.setEnabled(false);
put3.setEnabled(false);
put4.setEnabled(false);
put5.setEnabled(false);
put6.setEnabled(false);
put7.setEnabled(false);
break;
case 1:
put1.setEnabled(true);
put2.setEnabled(true);
put3.setEnabled(true);
put4.setEnabled(true);
put5.setEnabled(true);
put6.setEnabled(true);
put7.setEnabled(true);
break;
}
}
public static void main(String[] args) throws IOException {
viergewinntgraphik frm = new viergewinntgraphik();
frm.setSize(900, 800);
frm.setVisible(true);
WindowQuitter wquit = new WindowQuitter();
frm.addWindowListener(wquit);
//Spielfelderstellen;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
felder[i][j] = '|';
}
}
frm.setResizable(false);
}
//**********************PRÜFEN*************************************************************
public static String pruefen() {
String gewinnnachricht = "weiter";
char player = 'R';
switch (spieler) {
case 1:
player = 'R';
break;
case 2:
player = 'B';
break;
}
int anzahl = 0;
//*******WAAGERECHT
//***** Spieler gewonnen 1 waagerecht? ****
int zaehler = 0;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
if (felder[i][j] == player) { //wenn feld gleich R
if (zaehler != i) {
anzahl = 0;
}
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
zaehler = i;
}
}
////////////**SENKRECHT
//***** Spieler gewonnen 1 senkrecht? ****
anzahl = 0;
for (int j = 0; j < 7; j++) {
for (int i = 0; i < 6; i++) {
if (felder[i][j] == player) { //wenn feld gleich R
if (zaehler != j) {
anzahl = 0;
}
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
zaehler = j;
}
}
//*********************************Spiele gewonnen Diagonal************************
//Oben Links nach Unten Rechts!!
anzahl = 0;
int k = 0;
for (int i = 2; i < 6; i++) { //REIHE 1
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 0;
anzahl = 0;
for (int i = 1; i < 6; i++) { //REIHE 2
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 0;
anzahl = 0;
for (int i = 0; i < 6; i++) { //REIHE 3
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 1;
anzahl = 0;
for (int i = 0; i < 6; i++) { //REIHE 4
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 2;
anzahl = 0;
for (int i = 0; i < 5; i++) { //REIHE 5
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 3;
anzahl = 0;
for (int i = 0; i < 4; i++) { //REIHE 6
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
//Unten Links nach Oben Rechts!!!****************
anzahl = 0;
k = 0;
for (int i = 3; i >= 0; i--) { //REIHE 1
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 0;
anzahl = 0;
for (int i = 4; i >= 0; i--) { //REIHE 2
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 0;
anzahl = 0;
for (int i = 5; i >= 0; i--) { //REIHE 3
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 1;
anzahl = 0;
for (int i = 5; i >= 0; i--) { //REIHE 4
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 2;
anzahl = 0;
for (int i = 5; i >= 1; i--) { //REIHE 5
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
k = 3;
anzahl = 0;
for (int i = 5; i >= 2; i--) { //REIHE 6
if (felder[i][k] == player) {
anzahl += 1;
if (anzahl == 4) {
return gewinnnachricht = "spieler" + spieler;
}
} else {
anzahl = 0;
}
k++;
}
//*********Feld voll?*******
anzahl = 0;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
if (felder[i][j] != '|') { //
anzahl += 1; //zählt unbesetzte felder
if (anzahl == 42) { //wenn alle felder besetzt sind
return gewinnnachricht = "voll";
}
} //ende if abfrage feld leer
} //ende j for schleife
} // ende i for schleife
return gewinnnachricht;
}
}
class WindowQuitter extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}