changed game behaviour
This commit is contained in:
parent
6e81052e38
commit
b388cce5f0
|
@ -13,29 +13,33 @@ public class TestClass {
|
||||||
|
|
||||||
public static void main(String args[]) throws InterruptedException {
|
public static void main(String args[]) throws InterruptedException {
|
||||||
|
|
||||||
IRelaisboard board = new Relaisboard("/dev/ttyUSB0");
|
IRelaisboard relaisboard = new Relaisboard("/dev/ttyUSB0");
|
||||||
board.open();
|
relaisboard.open();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
board.setRelais(1,false);
|
relaisboard.setRelais(1,false);
|
||||||
//board.setRelais(1, true);
|
//relaisboard.setRelais(1, true);
|
||||||
|
|
||||||
board.toggleRelais(1, 500);
|
relaisboard.toggleRelais(1, 500);
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
board.toggleRelais(1, 500);
|
relaisboard.toggleRelais(1, 500);
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
board.toggleRelais(1, 500);
|
relaisboard.toggleRelais(1, 500);
|
||||||
|
|
||||||
//board.setRelais(1, false);
|
//relaisboard.setRelais(1, false);
|
||||||
|
|
||||||
Thread.sleep(4000); */
|
Thread.sleep(4000); */
|
||||||
|
|
||||||
board.blinkRelais(2, 500, 6); // hint Button
|
//relaisboard.blinkRelais(2, 500, 6);
|
||||||
|
relaisboard.toggleRelais(0, 300);
|
||||||
|
relaisboard.toggleRelais(1, 600);
|
||||||
|
relaisboard.toggleRelais(2, 1000);
|
||||||
|
relaisboard.toggleRelais(3, 10000);
|
||||||
|
|
||||||
Thread.sleep(6000);
|
Thread.sleep(11000);
|
||||||
|
|
||||||
|
|
||||||
board.close();
|
relaisboard.close();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,20 +18,22 @@ public class Relaisboard implements IRelaisboard {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendData(final int relais, final boolean state) {
|
private void sendData(final int relais, final boolean state) {
|
||||||
if(relais >= 0 && relais < 8 && outputStream != null) {
|
synchronized (outputStream) {
|
||||||
char charsOff[] = { 'a','b','c','d','e','f','g','h' };
|
if(relais >= 0 && relais < 8 && outputStream != null) {
|
||||||
char charsOn[] = { 'A','B','C','D','E','F','G','H' };
|
char charsOff[] = { 'a','b','c','d','e','f','g','h' };
|
||||||
|
char charsOn[] = { 'A','B','C','D','E','F','G','H' };
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if(state) {
|
if(state) {
|
||||||
outputStream.write(charsOn[relais]);
|
outputStream.write(charsOn[relais]);
|
||||||
} else {
|
} else {
|
||||||
outputStream.write(charsOff[relais]);
|
outputStream.write(charsOff[relais]);
|
||||||
|
}
|
||||||
|
|
||||||
|
outputStream.flush();
|
||||||
|
} catch (IOException e) {
|
||||||
|
Logger.sLog("Fehler beim Senden");
|
||||||
}
|
}
|
||||||
|
|
||||||
outputStream.flush();
|
|
||||||
} catch (IOException e) {
|
|
||||||
Logger.sLog("Fehler beim Senden");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,73 +98,67 @@ public class Relaisboard implements IRelaisboard {
|
||||||
public void setRelais(final int relais, final boolean state) {
|
public void setRelais(final int relais, final boolean state) {
|
||||||
if(!serialPortGeoeffnet) return;
|
if(!serialPortGeoeffnet) return;
|
||||||
|
|
||||||
synchronized (mLock) {
|
Runnable r = new Runnable() {
|
||||||
Runnable r = new Runnable() {
|
@Override
|
||||||
@Override
|
public void run() {
|
||||||
public void run() {
|
sendData(relais, state);
|
||||||
sendData(relais, state);
|
}
|
||||||
}
|
};
|
||||||
};
|
|
||||||
|
|
||||||
new Thread(r).start();
|
new Thread(r).start();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toggleRelais(final int relais, final int milliseconds) {
|
public void toggleRelais(final int relais, final int milliseconds) {
|
||||||
if(!serialPortGeoeffnet) return;
|
if(!serialPortGeoeffnet) return;
|
||||||
|
|
||||||
synchronized (mLock) {
|
Runnable r = new Runnable() {
|
||||||
Runnable r = new Runnable() {
|
@Override
|
||||||
@Override
|
public void run() {
|
||||||
public void run() {
|
sendData(relais, true);
|
||||||
sendData(relais, true);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(milliseconds);
|
Thread.sleep(milliseconds);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
|
||||||
|
|
||||||
sendData(relais, false);
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
new Thread(r).start();
|
sendData(relais, false);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
new Thread(r).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void blinkRelais(final int relais, final int pause, final int count) {
|
public void blinkRelais(final int relais, final int pause, final int count) {
|
||||||
if(!serialPortGeoeffnet) return;
|
if(!serialPortGeoeffnet) return;
|
||||||
|
|
||||||
synchronized (mLock) {
|
Runnable r = new Runnable() {
|
||||||
Runnable r = new Runnable() {
|
@Override
|
||||||
@Override
|
public void run() {
|
||||||
public void run() {
|
int i;
|
||||||
int i;
|
|
||||||
|
|
||||||
for(i = 0; i< count; i++) {
|
for(i = 0; i< count; i++) {
|
||||||
sendData(relais, true);
|
sendData(relais, true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(pause);
|
Thread.sleep(pause);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
sendData(relais, false);
|
sendData(relais, false);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(pause);
|
Thread.sleep(pause);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
};
|
||||||
|
|
||||||
new Thread(r).start();
|
new Thread(r).start();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ public interface IStatemachine {
|
||||||
int getStateChangeCounter();
|
int getStateChangeCounter();
|
||||||
void handleInput(char input);
|
void handleInput(char input);
|
||||||
int getTimerSecondsLast();
|
int getTimerSecondsLast();
|
||||||
|
int getTimerSeconds();
|
||||||
|
|
||||||
|
|
||||||
void startTimer(int seconds);
|
void startTimer(int seconds);
|
||||||
|
|
|
@ -19,7 +19,8 @@ public class Statemachine implements IStatemachine {
|
||||||
TABLE_GAME_SIX,
|
TABLE_GAME_SIX,
|
||||||
TABLE_GAME_DONE,
|
TABLE_GAME_DONE,
|
||||||
ROKET_STARTED,
|
ROKET_STARTED,
|
||||||
ROKET_DONE
|
ROKET_DONE,
|
||||||
|
LOOSED
|
||||||
}
|
}
|
||||||
|
|
||||||
private final char RESET = '1';
|
private final char RESET = '1';
|
||||||
|
@ -37,6 +38,7 @@ public class Statemachine implements IStatemachine {
|
||||||
private int stateChangeCounter;
|
private int stateChangeCounter;
|
||||||
private state currentState;
|
private state currentState;
|
||||||
private int timertSecondsLast;
|
private int timertSecondsLast;
|
||||||
|
private int timertSeconds;
|
||||||
|
|
||||||
|
|
||||||
public Statemachine() {
|
public Statemachine() {
|
||||||
|
@ -82,8 +84,6 @@ public class Statemachine implements IStatemachine {
|
||||||
|
|
||||||
if( newState != currentState ) {
|
if( newState != currentState ) {
|
||||||
stateChangeCounter++;
|
stateChangeCounter++;
|
||||||
Logger.sLog("newState = " + newState);
|
|
||||||
|
|
||||||
currentState = newState;
|
currentState = newState;
|
||||||
onStateChanged();
|
onStateChanged();
|
||||||
}
|
}
|
||||||
|
@ -96,23 +96,27 @@ public class Statemachine implements IStatemachine {
|
||||||
return timertSecondsLast / 10;
|
return timertSecondsLast / 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getTimerSeconds() {
|
||||||
|
return timertSeconds / 10;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startTimer(int seconds) {
|
public void startTimer(int seconds) {
|
||||||
Logger.sLog("starting timer");
|
|
||||||
timertSecondsLast = seconds*10;
|
timertSecondsLast = seconds*10;
|
||||||
|
timertSeconds = seconds*10;
|
||||||
scheduleTimer();
|
scheduleTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stopTimer() {
|
public void stopTimer() {
|
||||||
Logger.sLog("stopping timer");
|
|
||||||
if(timer != null) timer.cancel();
|
if(timer != null) timer.cancel();
|
||||||
timertSecondsLast = 0;
|
timertSecondsLast = 0;
|
||||||
|
timertSeconds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void pauseTimer(boolean pause) {
|
public void pauseTimer(boolean pause) {
|
||||||
Logger.sLog("pausing timer: " + pause);
|
|
||||||
if(pause) {
|
if(pause) {
|
||||||
if(timer != null) timer.cancel();
|
if(timer != null) timer.cancel();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -13,6 +13,7 @@ public class TheGame implements StatemachineListener, GuiEventListener, IRCEvent
|
||||||
private IBuntiClient bunti;
|
private IBuntiClient bunti;
|
||||||
private IMPDController mpdController;
|
private IMPDController mpdController;
|
||||||
private IRelaisboard relaisboard;
|
private IRelaisboard relaisboard;
|
||||||
|
private int gamerRating = 3;
|
||||||
|
|
||||||
public TheGame(IGuiControl guiControl) {
|
public TheGame(IGuiControl guiControl) {
|
||||||
this.guiControl = guiControl;
|
this.guiControl = guiControl;
|
||||||
|
@ -36,6 +37,12 @@ public class TheGame implements StatemachineListener, GuiEventListener, IRCEvent
|
||||||
relaisboard.toggleRelais(2, 2000);
|
relaisboard.toggleRelais(2, 2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void rate(int rating) {
|
||||||
|
gamerRating += rating;
|
||||||
|
if(gamerRating > 5) gamerRating = 5;
|
||||||
|
if(gamerRating < 1) gamerRating = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event listener for state change events from statemachine
|
* Event listener for state change events from statemachine
|
||||||
|
@ -48,6 +55,7 @@ public class TheGame implements StatemachineListener, GuiEventListener, IRCEvent
|
||||||
|
|
||||||
switch (newState) {
|
switch (newState) {
|
||||||
case IDLE:
|
case IDLE:
|
||||||
|
gamerRating = 3;
|
||||||
machine.stopTimer();
|
machine.stopTimer();
|
||||||
guiControl.setExtra("");
|
guiControl.setExtra("");
|
||||||
guiControl.setWall("");
|
guiControl.setWall("");
|
||||||
|
@ -79,12 +87,12 @@ public class TheGame implements StatemachineListener, GuiEventListener, IRCEvent
|
||||||
mpdController.playSong("K2", "Der Berg Ruft");
|
mpdController.playSong("K2", "Der Berg Ruft");
|
||||||
|
|
||||||
bunti.setLampel(true,false,false);
|
bunti.setLampel(true,false,false);
|
||||||
bunti.setPar56(255,0,100);
|
bunti.setPar56(20,0,100);
|
||||||
guiControl.showCountDown(true);
|
guiControl.showCountDown(true);
|
||||||
break;
|
break;
|
||||||
case TABLE_GAME_TWO:
|
case TABLE_GAME_TWO:
|
||||||
bunti.setLampel(false,true,false);
|
bunti.setLampel(false,true,false);
|
||||||
bunti.setPar56(255,0,100);
|
bunti.setPar56(100,0,100);
|
||||||
|
|
||||||
guiControl.showCountDown(true);
|
guiControl.showCountDown(true);
|
||||||
break;
|
break;
|
||||||
|
@ -100,48 +108,58 @@ public class TheGame implements StatemachineListener, GuiEventListener, IRCEvent
|
||||||
|
|
||||||
|
|
||||||
bunti.setLampel(false,true,false);
|
bunti.setLampel(false,true,false);
|
||||||
bunti.setPar56(255,55,0);
|
bunti.setPar56(200,100,0);
|
||||||
|
|
||||||
guiControl.showCountDown(true);
|
guiControl.showCountDown(true);
|
||||||
break;
|
break;
|
||||||
case TABLE_GAME_FIVE:
|
case TABLE_GAME_FIVE:
|
||||||
bunti.setLampel(false,true,false);
|
bunti.setLampel(false,true,false);
|
||||||
bunti.setPar56(255,75,0);
|
bunti.setPar56(150,150,0);
|
||||||
|
|
||||||
guiControl.showCountDown(true);
|
guiControl.showCountDown(true);
|
||||||
break;
|
break;
|
||||||
case TABLE_GAME_SIX:
|
case TABLE_GAME_SIX:
|
||||||
mpdController.setVolume(60);
|
//mpdController.setVolume(60);
|
||||||
mpdController.playSong("Zlatko & Jürgen","Großer Bruder");
|
//mpdController.playSong("Zlatko & Jürgen","Großer Bruder");
|
||||||
|
|
||||||
|
|
||||||
bunti.setLampel(false,true,false);
|
bunti.setLampel(false,true,false);
|
||||||
bunti.setPar56(255,100,0);
|
bunti.setPar56(100,200,0);
|
||||||
|
|
||||||
guiControl.showCountDown(true);
|
guiControl.showCountDown(true);
|
||||||
break;
|
break;
|
||||||
case TABLE_GAME_DONE:
|
case TABLE_GAME_DONE:
|
||||||
bunti.setLampel(false,false,true);
|
bunti.setLampel(false,false,true);
|
||||||
bunti.setPar56(255,100,0);
|
bunti.setPar56(100,255,0);
|
||||||
|
|
||||||
guiControl.showCountDown(true);
|
guiControl.showCountDown(true);
|
||||||
machine.pauseTimer(true);
|
machine.pauseTimer(true);
|
||||||
|
|
||||||
|
// spieler haben 8 Minuten, wenn sie es in weniger als 4 minuten schaffen
|
||||||
|
// gibts +1, in weniger als 2 minuten gibts +2
|
||||||
|
if(machine.getTimerSecondsLast() >= 6*60 ) {
|
||||||
|
rate(2);
|
||||||
|
} else if(machine.getTimerSecondsLast() > 4*60) {
|
||||||
|
rate(1);
|
||||||
|
}
|
||||||
|
if(machine.getStateChangeCounter() > 100) {
|
||||||
|
rate(-1);
|
||||||
|
}
|
||||||
|
|
||||||
sayScore();
|
sayScore();
|
||||||
|
|
||||||
relaisboard.blinkRelais(2, 500, 6); // hint Button
|
relaisboard.blinkRelais(2, 700, 6); // hint Button
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ROKET_STARTED:
|
case ROKET_STARTED:
|
||||||
mpdController.setVolume(50);
|
mpdController.setVolume(50);
|
||||||
mpdController.playSong("The Underdog Project", "Summer Jam");
|
mpdController.playSong("The Underdog Project", "Summer Jam");
|
||||||
|
|
||||||
|
|
||||||
bunti.setLampel(false,false,true);
|
bunti.setLampel(false,false,true);
|
||||||
bunti.setPar56(0, 255, 0);
|
bunti.setPar56(0, 255, 0);
|
||||||
|
|
||||||
ircClient.say("table game complete, r0kets now");
|
ircClient.say("table game complete, r0kets now");
|
||||||
|
|
||||||
relaisboard.toggleRelais(0, 300);
|
relaisboard.toggleRelais(0, 300);
|
||||||
|
relaisboard.toggleRelais(3, 10000);
|
||||||
|
|
||||||
guiControl.showCountDown(true);
|
guiControl.showCountDown(true);
|
||||||
machine.startTimer(7*60);
|
machine.startTimer(7*60);
|
||||||
|
@ -150,12 +168,22 @@ public class TheGame implements StatemachineListener, GuiEventListener, IRCEvent
|
||||||
mpdController.setVolume(50);
|
mpdController.setVolume(50);
|
||||||
mpdController.playSong("Coldplay", "Amsterdam");
|
mpdController.playSong("Coldplay", "Amsterdam");
|
||||||
|
|
||||||
|
|
||||||
bunti.setLampel(true,true,true);
|
bunti.setLampel(true,true,true);
|
||||||
bunti.setPar56(255, 196, 0);
|
bunti.setPar56(255, 196, 0);
|
||||||
|
|
||||||
guiControl.showCountDown(true);
|
guiControl.showCountDown(true);
|
||||||
machine.pauseTimer(true);
|
machine.pauseTimer(true);
|
||||||
|
|
||||||
|
// spieler haben 7 Minuten, wenn sie es in weniger als 4 minuten schaffen
|
||||||
|
// gibts +1, in weniger als 2 minuten gibts +2
|
||||||
|
if(machine.getTimerSecondsLast() >= 5*60 ) {
|
||||||
|
rate(2);
|
||||||
|
} else if(machine.getTimerSecondsLast() > 3*60) {
|
||||||
|
rate(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
sayScore();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +192,16 @@ public class TheGame implements StatemachineListener, GuiEventListener, IRCEvent
|
||||||
@Override
|
@Override
|
||||||
public void timerTick(int tsecondsLeft) {
|
public void timerTick(int tsecondsLeft) {
|
||||||
guiControl.setCountDown(tsecondsLeft);
|
guiControl.setCountDown(tsecondsLeft);
|
||||||
if(tsecondsLeft == 0) ircClient.say("timer expired");
|
if(tsecondsLeft == 0) {
|
||||||
|
ircClient.say("timer expired");
|
||||||
|
Statemachine.state bla = machine.getCurrentState();
|
||||||
|
|
||||||
|
if( bla != Statemachine.state.TABLE_GAME_DONE &&
|
||||||
|
bla != Statemachine.state.ROKET_DONE ) {
|
||||||
|
rate(-2);
|
||||||
|
sayScore();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -305,19 +342,19 @@ public class TheGame implements StatemachineListener, GuiEventListener, IRCEvent
|
||||||
} else {
|
} else {
|
||||||
ircClient.say("dafuq?");
|
ircClient.say("dafuq?");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void sayScore() {
|
private void sayScore() {
|
||||||
ircClient.say("stateChangeCounter: " + machine.getStateChangeCounter());
|
ircClient.say("stateChangeCounter: " + machine.getStateChangeCounter());
|
||||||
// ircClient.say("timerlast: " + machine.getTimerSecondsLast());
|
|
||||||
|
|
||||||
int seconds = machine.getTimerSecondsLast();
|
int seconds = machine.getTimerSecondsLast();
|
||||||
|
int seconds1 = machine.getTimerSeconds();
|
||||||
int mins = seconds / 60;
|
int mins = seconds / 60;
|
||||||
int secs = seconds % 60;
|
int secs = seconds % 60;
|
||||||
ircClient.say(" " + mins + ":" + secs + "");
|
int mins1 = seconds1 / 60;
|
||||||
|
int secs1 = seconds1 % 60;
|
||||||
|
ircClient.say("time " + mins1 + ":" + secs1 + " last: " + mins + ":" + secs + "");
|
||||||
|
ircClient.say("gamerRating: " + gamerRating);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,6 @@ public class MainGui extends JFrame implements IGuiControl {
|
||||||
double percentile = ((tseconds-100.0)/300.0);
|
double percentile = ((tseconds-100.0)/300.0);
|
||||||
double red = 255.0 - percentile * 255.0;
|
double red = 255.0 - percentile * 255.0;
|
||||||
double green = 255.0 - red;
|
double green = 255.0 - red;
|
||||||
double blue = percentile * 100.0;
|
|
||||||
|
|
||||||
// System.out.println("red= " + red + " green=" + green + " blue="+blue);
|
// System.out.println("red= " + red + " green=" + green + " blue="+blue);
|
||||||
|
|
||||||
|
@ -63,14 +62,12 @@ public class MainGui extends JFrame implements IGuiControl {
|
||||||
if(red < 0) red = 0;
|
if(red < 0) red = 0;
|
||||||
if(green > 255) green = 255;
|
if(green > 255) green = 255;
|
||||||
if(green < 0) green = 0;
|
if(green < 0) green = 0;
|
||||||
if(blue > 255) blue = 255;
|
|
||||||
if(blue < 0) blue = 0;
|
|
||||||
|
|
||||||
Color fColor = new Color((int)red,(int)green, (int)blue);
|
Color fColor = new Color((int)red,(int)green, 0);
|
||||||
countDown.setForeground(fColor);
|
countDown.setForeground(fColor);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
countDown.setForeground(new Color(0x00, 190, 100));
|
countDown.setForeground(new Color(42, 190, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -87,7 +84,7 @@ public class MainGui extends JFrame implements IGuiControl {
|
||||||
|
|
||||||
Font wallFont = new Font("Arcade Interlaced", Font.PLAIN, 66);
|
Font wallFont = new Font("Arcade Interlaced", Font.PLAIN, 66);
|
||||||
Font lowerFont = new Font("Arcade Interlaced", Font.PLAIN, 80);
|
Font lowerFont = new Font("Arcade Interlaced", Font.PLAIN, 80);
|
||||||
Color fontColor = new Color(0x00, 190, 100);
|
Color fontColor = new Color(42, 190, 0);
|
||||||
|
|
||||||
textWall.setFont(wallFont);
|
textWall.setFont(wallFont);
|
||||||
textWall.setForeground(fontColor);
|
textWall.setForeground(fontColor);
|
||||||
|
|
Loading…
Reference in New Issue