Add files via upload

Spielstart
JulienRo 8 years ago committed by GitHub
parent 59980f894e
commit 37fd202480

@ -0,0 +1,142 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
import java.awt.Graphics2D;
/**
Diese Klasse stellt einen Button dar.
Als funktionelles Vorbild dafür hält der Button aus dem .NET-Framework für UWP-Apps dar.
@author Felix Stupp
@version 20.05.2016
*/
public class Bildbutton extends GUI_Interface {
private boolean autoSize = false;
protected GreenfootImage picture = new GreenfootImage(1,1);
private ButtonEvent handler;
/**
Erstellt einen Button mit dem gegebenen Text und der zugehörigen Textgröße.
@param txt Der Text, den der Button darstellen soll.
@param size Die Textgröße, in der der Button den Text darstellen soll.
*/
public Bildbutton(GreenfootImage pict) {
picture = pict;
redrawInternal();
}
/**
Erstellt einen Button mit dem gegebenen Objekt als Event-Handler.
@param h Der Handler mit dem Interface ButtonEvent implementiert.
*/
public Bildbutton(ButtonEvent h) {
handler = h;
redrawInternal();
}
/**
Erstellt einen Button mit dem gegebenen Text, der zugehörigen Textgröße und dem gegebenen Objekt als Event-Handler.
@param txt Der Text, den der Button darstellen soll.
@param size Die Textgröße, in der der Button den Text darstellen soll.
@param h Der Handler mit dem Interface ButtonEvent implementiert.
*/
public Bildbutton(GreenfootImage pict, ButtonEvent h) {
picture = pict;
handler = h;
redrawInternal();
}
/**
Fragt ab, ob ein Klick auf den Button gekommen ist.
Wird intern von Greenfoot benötigt.
*/
public void act() {
if(Greenfoot.mouseClicked(this) && handler != this) {
handler.buttonClicked(this);
}
}
/**
Gibt zurück, ob die Größe des Buttons von dem Text bestimmt werden soll.
@return Wert der AutoSize-Eigenschaft
*/
public boolean getAutoSize() {
return autoSize;
}
/**
Legt fest, ob die Größe des Buttons von dem Text bestimmt werden soll.
Wird der Wert auf TRUE geändert, erfolgt automatisch ein Redraw des Objekts.
@param b Der neue Wert der AutoSize-Eigenschaft.
*/
public void setAutoSize(boolean b) {
autoSize = b;
if(autoSize) {
redraw();
}
}
/**
Gibt den aktuellen Text zurück.
@return Der aktuelle Text
*/
public GreenfootImage getPicture() {
return picture;
}
/**
Setzt den darzustellenden Text auf den neuen Wert.
@param s Der neue Text
@return Gibt an, ob sich der Text geändert hat. Bei TRUE erfolgte bereits ein Redraw.
*/
public boolean setPicture(GreenfootImage s) {
if(picture != s) {
picture = s;
redraw();
return true;
}
return false;
}
/**
Gibt den aktuellen EventHandler des Buttons zurück.
@return Der Handler als ButtonEvent
*/
public ButtonEvent getHandler() {
return handler;
}
/**
Setzt den EventHandler auf ein neues Objekt.
@param h Der Handler mit implementiertem ButtonEvent-Interface
*/
public void setHandler(ButtonEvent h) {
handler = h;
}
/**
Entfernt den aktuellen EventHandler, um die Ausführung zukünftiger Events zu verhindern.
*/
public void removeHandler() {
handler = null;
}
protected void redrawInternal() {
GreenfootImage tI = picture;
if(autoSize) {
sx = tI.getWidth() + (6 * 2) + 4;
sy = tI.getHeight() + (6 * 2) + 4;
}
GreenfootImage all = new GreenfootImage(sx,sy);
Color trans = new Color(0,0,0,0);
all.setColor(trans);
all.fill();
Graphics2D g = all.getAwtImage().createGraphics();
g.setColor(backC);
g.fillRoundRect(0,0,sx,sy,24,24);
all.drawImage(tI,(sx-tI.getWidth())/2,(sy-tI.getHeight())/2);
setImage(all);
}
/**
Zeichnet das GreenfootImage des Buttons erneut und zeigt es an.
*/
public void redraw() {
redrawInternal();
}
}

@ -9,20 +9,18 @@ import java.awt.Graphics2D;
@author Felix Stupp @author Felix Stupp
@version 20.05.2016 @version 20.05.2016
*/ */
public class Button extends GUI_Interface { public class Button extends Bildbutton {
private boolean autoSize = false;
private int textSize = 32; // as default text size private int textSize = 32; // as default text size
private String text = ""; private String text = "";
private ButtonEvent handler;
/** /**
Erstellt einen Button mit dem gegebenen Text und der zugehörigen Textgröße. Erstellt einen Button mit dem gegebenen Text und der zugehörigen Textgröße.
@param txt Der Text, den der Button darstellen soll. @param txt Der Text, den der Button darstellen soll.
@param size Die Textgröße, in der der Button den Text darstellen soll. @param size Die Textgröße, in der der Button den Text darstellen soll.
*/ */
public Button(String txt, int size) { public Button(String txt, int size) {
super(new GreenfootImage(txt,size,Color.WHITE,Color.BLACK));
text = txt; text = txt;
textSize = size; textSize = size;
redraw(); redraw();
@ -32,7 +30,7 @@ public class Button extends GUI_Interface {
@param h Der Handler mit dem Interface ButtonEvent implementiert. @param h Der Handler mit dem Interface ButtonEvent implementiert.
*/ */
public Button(ButtonEvent h) { public Button(ButtonEvent h) {
handler = h; super(h);
redraw(); redraw();
} }
/** /**
@ -42,41 +40,12 @@ public class Button extends GUI_Interface {
@param h Der Handler mit dem Interface ButtonEvent implementiert. @param h Der Handler mit dem Interface ButtonEvent implementiert.
*/ */
public Button(String txt, int size, ButtonEvent h) { public Button(String txt, int size, ButtonEvent h) {
super(new GreenfootImage(txt,size,Color.WHITE,Color.BLACK),h);
text = txt; text = txt;
textSize = size; textSize = size;
handler = h;
redraw(); redraw();
} }
/**
Fragt ab, ob ein Klick auf den Button gekommen ist.
Wird intern von Greenfoot benötigt.
*/
public void act() {
if(Greenfoot.mouseClicked(this) && handler != this) {
handler.buttonClicked(this);
}
}
/**
Gibt zurück, ob die Größe des Buttons von dem Text bestimmt werden soll.
@return Wert der AutoSize-Eigenschaft
*/
public boolean getAutoSize() {
return autoSize;
}
/**
Legt fest, ob die Größe des Buttons von dem Text bestimmt werden soll.
Wird der Wert auf TRUE geändert, erfolgt automatisch ein Redraw des Objekts.
@param b Der neue Wert der AutoSize-Eigenschaft.
*/
public void setAutoSize(boolean b) {
autoSize = b;
if(autoSize) {
redraw();
}
}
/** /**
Gibt die aktelle Textgröße zurück. Gibt die aktelle Textgröße zurück.
@return Aktuelle Textgröße @return Aktuelle Textgröße
@ -119,44 +88,20 @@ public class Button extends GUI_Interface {
return false; return false;
} }
/** public GreenfootImage getPicture() {
Gibt den aktuellen EventHandler des Buttons zurück. return null;
@return Der Handler als ButtonEvent
*/
public ButtonEvent getHandler() {
return handler;
}
/**
Setzt den EventHandler auf ein neues Objekt.
@param h Der Handler mit implementiertem ButtonEvent-Interface
*/
public void setHandler(ButtonEvent h) {
handler = h;
} }
/**
Entfernt den aktuellen EventHandler, um die Ausführung zukünftiger Events zu verhindern. public boolean setPicture(GreenfootImage i) {
*/ return false;
public void removeHandler() {
handler = null;
} }
/** /**
Zeichnet das GreenfootImage des Buttons erneut und zeigt es an. Zeichnet das GreenfootImage des Buttons erneut und zeigt es an.
*/ */
public void redraw() { public void redraw() {
GreenfootImage tI = new GreenfootImage(text,textSize,foreC,backC); //picture = new GreenfootImage(text,textSize,Color.BLACK,Color.WHITE);
if(autoSize) { picture = new GreenfootImage(text,textSize,foreC,backC);
sx = tI.getWidth() + (6 * 2) + 4; super.redraw();
sy = tI.getHeight() + (6 * 2) + 4;
}
GreenfootImage all = new GreenfootImage(sx,sy);
Color trans = new Color(0,0,0,0);
all.setColor(trans);
all.fill();
Graphics2D g = all.getAwtImage().createGraphics();
g.setColor(backC);
g.fillRoundRect(0,0,sx,sy,24,24);
all.drawImage(tI,(sx-tI.getWidth())/2,(sy-tI.getHeight())/2);
setImage(all);
} }
} }

@ -9,6 +9,6 @@ import greenfoot.*;
*/ */
public interface ButtonEvent { public interface ButtonEvent {
public void buttonClicked(Button obj); public void buttonClicked(Bildbutton obj);
} }

@ -10,7 +10,7 @@ import javax.swing.JOptionPane;
*/ */
public class Colours extends World implements ButtonEvent public class Colours extends World implements ButtonEvent
{ {
Button schwarz = new Button ("Schwarz", 16, this); Bildbutton schwarz = new Bildbutton (new GreenfootImage("SchwarzeArmeeSkal.png"), this);
Button blau = new Button ("Blau", 16, this); Button blau = new Button ("Blau", 16, this);
Button grün = new Button ("Grün", 16, this); Button grün = new Button ("Grün", 16, this);
Button rot = new Button ("Rot", 16, this); Button rot = new Button ("Rot", 16, this);
@ -50,7 +50,7 @@ public class Colours extends World implements ButtonEvent
super(x, y, z); super(x, y, z);
setBackground(Start_Load.backgroundImage); setBackground(Start_Load.backgroundImage);
Button[] bList = new Button[] {schwarz,gelb,blau,grün,rot,lila,weiter,remove}; Bildbutton[] bList = new Bildbutton[] {schwarz,gelb,blau,grün,rot,lila,weiter,remove};
Label[] lList = new Label[] {header,pl1,pl2,pl3,pl4,pl5}; Label[] lList = new Label[] {header,pl1,pl2,pl3,pl4,pl5};
addObject(header,200,15); addObject(header,200,15);
@ -78,7 +78,7 @@ public class Colours extends World implements ButtonEvent
lila.setForeColor(new Color(161,70,255)); lila.setForeColor(new Color(161,70,255));
for(int i = 0; i < bList.length; i++) { for(int i = 0; i < bList.length; i++) {
bList[i].setSize(100,50); bList[i].setSize(164,100);
} }
for(int i = 0; i < lList.length; i++) { for(int i = 0; i < lList.length; i++) {
lList[i].setBackColor(new Color(0,0,0,0)); lList[i].setBackColor(new Color(0,0,0,0));
@ -94,7 +94,7 @@ public class Colours extends World implements ButtonEvent
// verhindert durch falschsetzten einer Variable die Wiederauswahl einer Farbe // verhindert durch falschsetzten einer Variable die Wiederauswahl einer Farbe
// wenn Weiter geklickt wurde und x größer 1 ist wird eine neue Welt Map erzeugt, // wenn Weiter geklickt wurde und x größer 1 ist wird eine neue Welt Map erzeugt,
//der per Konstruktor die Daten der Colorklasse übertragen werden, dannach wird die Map die aktive Welt //der per Konstruktor die Daten der Colorklasse übertragen werden, dannach wird die Map die aktive Welt
public void buttonClicked (Button b) public void buttonClicked (Bildbutton b)
{ {
if (x < 5) { if (x < 5) {
if (b == schwarz && possw == true) { if (b == schwarz && possw == true) {

@ -251,7 +251,7 @@ public abstract class GeneralMap extends World implements ButtonEvent
} }
} }
public void buttonClicked(Button b) { public void buttonClicked(Bildbutton b) {
if ( modus == b ) { if ( modus == b ) {
if(status==GameStates.SETZEN && freeArmies == 0 ) { if(status==GameStates.SETZEN && freeArmies == 0 ) {
status=GameStates.KAMPF; status=GameStates.KAMPF;

@ -66,7 +66,7 @@ public class InputDialogWorld extends World implements ButtonEvent {
} }
} }
public void buttonClicked(Button b) { public void buttonClicked(Bildbutton b) {
if(b == abort) { if(b == abort) {
inputS = null; inputS = null;
} else if(b == okay) { } else if(b == okay) {

@ -45,7 +45,7 @@ public class Map extends World implements ButtonEvent
// } // }
} }
// Die Map Buttons geben der Variable m einen Wert // Die Map Buttons geben der Variable m einen Wert
public void buttonClicked(Button b) public void buttonClicked(Bildbutton b)
{ {
if (b== map1) if (b== map1)

@ -12,9 +12,9 @@ public class Start_Load extends World implements ButtonEvent
// Light Theme: "backgroundLight.png" // Light Theme: "backgroundLight.png"
// Dark Theme: "backgroundDark.png" // Dark Theme: "backgroundDark.png"
Button chulien = new Button("Neues Spiel", 16 , this); Button chulien;
Button spielanleitung = new Button("Spielanleitung", 16, this); Button spielanleitung;
Button zurück = new Button("zurück", 16, this); Button zurück;
/** /**
* Constructor for objects of class Start_Load. * Constructor for objects of class Start_Load.
* *
@ -23,6 +23,9 @@ public class Start_Load extends World implements ButtonEvent
{ {
// Create a new world with 600x400 cells with a cell size of 1x1 pixels. // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
super(1600, 900, 1); super(1600, 900, 1);
chulien = new Button("Neues Spiel", 16 , this);
spielanleitung = new Button("Spielanleitung", 16, this);
zurück = new Button("zurück", 16, this);
setBackground(backgroundImage); setBackground(backgroundImage);
chulien.setSize(100,50); chulien.setSize(100,50);
spielanleitung.setSize(100,50); spielanleitung.setSize(100,50);
@ -31,7 +34,7 @@ public class Start_Load extends World implements ButtonEvent
addObject (spielanleitung, (1600-spielanleitung.getWidth())/2+100, (900-spielanleitung.getHeight())/2 + 80); addObject (spielanleitung, (1600-spielanleitung.getWidth())/2+100, (900-spielanleitung.getHeight())/2 + 80);
} }
public void buttonClicked ( Button b) public void buttonClicked ( Bildbutton b)
{ {
if ( b == chulien) if ( b == chulien)
{ {

Loading…
Cancel
Save