mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +00:00
Fixed garbage code
This commit is contained in:
@@ -4,6 +4,8 @@ import javafx.geometry.Pos;
|
|||||||
import javafx.scene.image.ImageView;
|
import javafx.scene.image.ImageView;
|
||||||
import javafx.scene.text.Text;
|
import javafx.scene.text.Text;
|
||||||
import org.toop.app.widget.Primitive;
|
import org.toop.app.widget.Primitive;
|
||||||
|
import org.toop.app.widget.WidgetContainer;
|
||||||
|
import org.toop.app.widget.complex.PopupWidget;
|
||||||
import org.toop.app.widget.complex.ViewWidget;
|
import org.toop.app.widget.complex.ViewWidget;
|
||||||
|
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
@@ -11,50 +13,50 @@ import org.toop.local.AppContext;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
public class BaseTutorialWidget extends ViewWidget {
|
public class BaseTutorialWidget extends PopupWidget {
|
||||||
|
|
||||||
private TState state;
|
|
||||||
private Text tutorialText;
|
private Text tutorialText;
|
||||||
private Button previousButton;
|
private Button previousButton;
|
||||||
private Button nextButton;
|
private Button nextButton;
|
||||||
private Button noButton;
|
|
||||||
private Button yesButton;
|
|
||||||
private Button neverButton;
|
|
||||||
private ImageView imagery;
|
private ImageView imagery;
|
||||||
|
private int currentTextIndex = 0;
|
||||||
|
|
||||||
public BaseTutorialWidget(String key, Runnable onNo, Runnable onYes, Runnable onNever) {
|
public BaseTutorialWidget(String key) {
|
||||||
System.out.println("Trying to initialize...");
|
System.out.println("Trying to initialize...");
|
||||||
this.tutorialText = Primitive.text(key);
|
this.tutorialText = Primitive.text(key);
|
||||||
this.yesButton = Primitive.button("ok", () -> onYes.run());
|
WidgetContainer.add(Pos.CENTER, this);
|
||||||
this.noButton = Primitive.button("no", () -> onNo.run());
|
|
||||||
this.neverButton = Primitive.button("never", () -> onNever.run());
|
|
||||||
var a = Primitive.hbox(yesButton, noButton, neverButton);
|
|
||||||
add(Pos.CENTER, Primitive.vbox(tutorialText, a));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public BaseTutorialWidget(TState state, String key, Runnable onPrevious, Runnable onNext) {
|
private void setOnPrevious(Runnable onPrevious) {
|
||||||
this.state = state;
|
this.previousButton = Primitive.button("<", onPrevious);
|
||||||
this.tutorialText = Primitive.text(key);
|
|
||||||
this.previousButton = Primitive.button("<", () -> onPrevious.run());
|
|
||||||
this.nextButton = Primitive.button(">", () -> onNext.run());
|
|
||||||
var w = Primitive.hbox(previousButton, nextButton);
|
|
||||||
add(Pos.CENTER, Primitive.vbox(tutorialText, w));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public BaseTutorialWidget(TState state, String key, File image, Runnable onPrevious, Runnable onNext) {
|
private void setOnNext(Runnable onNext) {
|
||||||
this.state = state;
|
this.nextButton = Primitive.button(">", onNext);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTutorial(File image, Runnable onPrevious, Runnable onNext) {
|
||||||
|
setOnPrevious(onPrevious);
|
||||||
|
setOnNext(onNext);
|
||||||
this.imagery = Primitive.image(image);
|
this.imagery = Primitive.image(image);
|
||||||
this.tutorialText = Primitive.text(key);
|
|
||||||
this.previousButton = Primitive.button("<", () -> onPrevious.run());
|
|
||||||
this.nextButton = Primitive.button(">", () -> onNext.run());
|
|
||||||
var w = Primitive.hbox(previousButton, nextButton);
|
var w = Primitive.hbox(previousButton, nextButton);
|
||||||
var x = Primitive.vbox(imagery, tutorialText);
|
var x = Primitive.vbox(imagery, tutorialText);
|
||||||
add(Pos.CENTER, Primitive.vbox(x, w));
|
add(Pos.CENTER, Primitive.vbox(x, w));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update(String key, File image) {
|
public void update(boolean next, String[] locKeys, File[] imgs) {
|
||||||
|
currentTextIndex = next ? currentTextIndex + 1 : currentTextIndex - 1;
|
||||||
|
|
||||||
|
if (currentTextIndex >= locKeys.length) {
|
||||||
|
currentTextIndex--;
|
||||||
|
return;
|
||||||
|
} else if (currentTextIndex < 0) {
|
||||||
|
currentTextIndex++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
tutorialText.textProperty().unbind();
|
tutorialText.textProperty().unbind();
|
||||||
tutorialText.setText(AppContext.getString(key));
|
tutorialText.setText(AppContext.getString(locKeys[currentTextIndex]));
|
||||||
imagery.setImage(Primitive.image(image).getImage());
|
imagery.setImage(Primitive.image(imgs[currentTextIndex]).getImage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,35 +5,35 @@ import org.toop.app.widget.complex.ViewWidget;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
public class Connect4TutorialWidget extends ViewWidget {
|
public class Connect4TutorialWidget extends BaseTutorialWidget {
|
||||||
private TState state;
|
private final String[] keys;
|
||||||
private String[] keys = {"connect4.1", "connect4.2"};
|
|
||||||
private File[] images = {new File("app/src/main/resources/assets/images/connect41.png"), new File("app/src/main/resources/assets/images/connect42.png")};
|
private final File[] images = {
|
||||||
private BaseTutorialWidget tutorialWidget;
|
new File("app/src/main/resources/assets/images/connect41.png"),
|
||||||
|
new File("app/src/main/resources/assets/images/connect42.png")
|
||||||
|
};
|
||||||
|
|
||||||
public Connect4TutorialWidget() {
|
public Connect4TutorialWidget() {
|
||||||
this.state = new TState(keys.length);
|
String[] newKeys = {
|
||||||
tutorialWidget = new BaseTutorialWidget(
|
"connect4.1", "connect4.2"
|
||||||
state,
|
};
|
||||||
keys[state.getCurrent()],
|
|
||||||
images[state.getCurrent()],
|
super(newKeys[0]);
|
||||||
() -> {
|
|
||||||
if (state.hasPrevious()) {
|
keys = newKeys;
|
||||||
state.previous();
|
|
||||||
update();
|
setTutorial(
|
||||||
}
|
images[0],
|
||||||
},
|
() -> update(false, keys, images),
|
||||||
() -> {
|
() -> update(true, keys, images)
|
||||||
if (state.hasNext()) {
|
|
||||||
state.next();
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
add(Pos.CENTER, tutorialWidget);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void update() {
|
public String[] getKeys() {
|
||||||
tutorialWidget.update(keys[state.getCurrent()], images[state.getCurrent()]);
|
return keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
public File[] getImages() {
|
||||||
|
return images;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,35 +5,29 @@ import org.toop.app.widget.complex.ViewWidget;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
public class ReversiTutorialWidget extends ViewWidget {
|
public class ReversiTutorialWidget extends BaseTutorialWidget {
|
||||||
private TState state;
|
private final String[] keys;
|
||||||
private String[] keys = {"reversi1", "reversi2", "reversi3", "reversi4"};
|
private final File[] images = {new File("app/src/main/resources/assets/images/reversi1.png"), new File("app/src/main/resources/assets/images/reversi2.png"), new File("app/src/main/resources/assets/images/cat.jpg"), new File("app/src/main/resources/assets/images/cat.jpg")};
|
||||||
private File[] images = {new File("app/src/main/resources/assets/images/reversi1.png"), new File("app/src/main/resources/assets/images/reversi2.png"), new File("app/src/main/resources/assets/images/cat.jpg"), new File("app/src/main/resources/assets/images/cat.jpg")};
|
|
||||||
private BaseTutorialWidget tutorialWidget;
|
|
||||||
|
|
||||||
public ReversiTutorialWidget() {
|
public ReversiTutorialWidget() {
|
||||||
this.state = new TState(keys.length);
|
String[] newKeys = {"reversi1", "reversi2", "reversi3", "reversi4"};
|
||||||
tutorialWidget = new BaseTutorialWidget(
|
|
||||||
state,
|
super(newKeys[0]);
|
||||||
keys[state.getCurrent()],
|
|
||||||
images[state.getCurrent()],
|
keys = newKeys;
|
||||||
() -> {
|
|
||||||
if (state.hasPrevious()) {
|
setTutorial(
|
||||||
state.previous();
|
images[0],
|
||||||
update();
|
() -> update(false, keys, images),
|
||||||
}
|
() -> update(true, keys, images)
|
||||||
},
|
|
||||||
() -> {
|
|
||||||
if (state.hasNext()) {
|
|
||||||
state.next();
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
add(Pos.CENTER, tutorialWidget);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void update() {
|
public String[] getKeys() {
|
||||||
tutorialWidget.update(keys[state.getCurrent()], images[state.getCurrent()]);
|
return keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
public File[] getImages() {
|
||||||
|
return images;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package org.toop.app.widget.tutorial;
|
||||||
|
|
||||||
|
import javafx.geometry.Pos;
|
||||||
|
import org.toop.app.widget.Primitive;
|
||||||
|
import org.toop.app.widget.WidgetContainer;
|
||||||
|
import org.toop.app.widget.complex.PopupWidget;
|
||||||
|
|
||||||
|
public class ShowEnableTutorialWidget extends PopupWidget {
|
||||||
|
// private final Button yesButton;
|
||||||
|
// private final Button noButton;
|
||||||
|
// private final Button neverButton;
|
||||||
|
|
||||||
|
public ShowEnableTutorialWidget(String words, Runnable onYes, Runnable onNo, Runnable onNever) {
|
||||||
|
// this.yesButton = Primitive.button("ok", onYes);
|
||||||
|
// this.noButton = Primitive.button("no", onNo);
|
||||||
|
// this.neverButton = Primitive.button("never", onNever);
|
||||||
|
|
||||||
|
var a = Primitive.hbox(
|
||||||
|
Primitive.button("ok", onYes),
|
||||||
|
Primitive.button("no", onNo),
|
||||||
|
Primitive.button("never", onNever)
|
||||||
|
);
|
||||||
|
|
||||||
|
var txt = Primitive.text(words);
|
||||||
|
add(Pos.CENTER, Primitive.vbox(txt, a));
|
||||||
|
WidgetContainer.add(Pos.CENTER, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
package org.toop.app.widget.tutorial;
|
|
||||||
|
|
||||||
public class TState {
|
|
||||||
|
|
||||||
private int current;
|
|
||||||
private int total;
|
|
||||||
|
|
||||||
public TState(int total) {
|
|
||||||
this.total = total;
|
|
||||||
this.current = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getCurrent() {
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCurrent(int current) {
|
|
||||||
this.current = current;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTotal() {
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTotal(int total) {
|
|
||||||
this.total = total;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void next() {
|
|
||||||
current = current + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void previous() {
|
|
||||||
current = current - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasNext() {
|
|
||||||
return current < total - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasPrevious() {
|
|
||||||
return current > 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,39 +4,33 @@ import javafx.geometry.Pos;
|
|||||||
import org.toop.app.widget.complex.ViewWidget;
|
import org.toop.app.widget.complex.ViewWidget;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
public class TicTacToeTutorialWidget extends ViewWidget {
|
public class TicTacToeTutorialWidget extends BaseTutorialWidget {
|
||||||
|
|
||||||
private TState state;
|
private final String[] keys;
|
||||||
private String[] keys = {"tictactoe1", "tictactoe2"};
|
private final File[] images = {
|
||||||
private File[] images = {
|
|
||||||
new File("app/src/main/resources/assets/images/tictactoe1.png"),
|
new File("app/src/main/resources/assets/images/tictactoe1.png"),
|
||||||
new File("app/src/main/resources/assets/images/tictactoe2.png")
|
new File("app/src/main/resources/assets/images/tictactoe2.png")
|
||||||
};
|
};
|
||||||
private BaseTutorialWidget tutorialWidget;
|
|
||||||
|
|
||||||
public TicTacToeTutorialWidget() {
|
public TicTacToeTutorialWidget() {
|
||||||
this.state = new TState(keys.length);
|
String[] newKeys = {"tictactoe1", "tictactoe2"};
|
||||||
tutorialWidget = new BaseTutorialWidget(
|
|
||||||
state,
|
super(newKeys[0]);
|
||||||
keys[state.getCurrent()],
|
|
||||||
images[state.getCurrent()],
|
keys = newKeys;
|
||||||
() -> {
|
|
||||||
if (state.hasPrevious()) {
|
setTutorial(
|
||||||
state.previous();
|
images[0],
|
||||||
update();
|
() -> update(false, keys, images),
|
||||||
}
|
() -> update(true, keys, images)
|
||||||
},
|
|
||||||
() -> {
|
|
||||||
if (state.hasNext()) {
|
|
||||||
state.next();
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
add(Pos.CENTER, tutorialWidget);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void update() {
|
public String[] getKeys() {
|
||||||
tutorialWidget.update(keys[state.getCurrent()], images[state.getCurrent()]);
|
return keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
public File[] getImages() {
|
||||||
|
return images;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,23 +53,13 @@ public final class GameView extends ViewWidget {
|
|||||||
|
|
||||||
switch(gameType) {
|
switch(gameType) {
|
||||||
case "TicTacToe":
|
case "TicTacToe":
|
||||||
this.tutorialButton = Primitive.button("tutorialstring", () -> {
|
this.tutorialButton = Primitive.button("tutorialstring", TicTacToeTutorialWidget::new); break;
|
||||||
transitionNext(new TicTacToeTutorialWidget());
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "Reversi":
|
case "Reversi":
|
||||||
this.tutorialButton = Primitive.button("tutorialstring", () -> {
|
this.tutorialButton = Primitive.button("tutorialstring", ReversiTutorialWidget::new); break;
|
||||||
transitionNext(new ReversiTutorialWidget());
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case "Connect4":
|
case "Connect4":
|
||||||
this.tutorialButton = Primitive.button("tutorialstring", () -> {
|
this.tutorialButton = Primitive.button("tutorialstring", Connect4TutorialWidget::new); break;
|
||||||
transitionNext(new Connect4TutorialWidget());
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
this.tutorialButton = null;
|
this.tutorialButton = null; break;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setupLayout();
|
setupLayout();
|
||||||
|
|||||||
@@ -10,10 +10,7 @@ import org.toop.app.widget.WidgetContainer;
|
|||||||
import org.toop.app.widget.complex.PlayerInfoWidget;
|
import org.toop.app.widget.complex.PlayerInfoWidget;
|
||||||
import org.toop.app.widget.complex.ViewWidget;
|
import org.toop.app.widget.complex.ViewWidget;
|
||||||
import org.toop.app.widget.popup.ErrorPopup;
|
import org.toop.app.widget.popup.ErrorPopup;
|
||||||
import org.toop.app.widget.tutorial.BaseTutorialWidget;
|
import org.toop.app.widget.tutorial.*;
|
||||||
import org.toop.app.widget.tutorial.Connect4TutorialWidget;
|
|
||||||
import org.toop.app.widget.tutorial.ReversiTutorialWidget;
|
|
||||||
import org.toop.app.widget.tutorial.TicTacToeTutorialWidget;
|
|
||||||
import org.toop.local.AppContext;
|
import org.toop.local.AppContext;
|
||||||
|
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
@@ -40,84 +37,78 @@ public class LocalMultiplayerView extends ViewWidget {
|
|||||||
switch (information.type) {
|
switch (information.type) {
|
||||||
case TICTACTOE:
|
case TICTACTOE:
|
||||||
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstTTT()) {
|
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstTTT()) {
|
||||||
BaseTutorialWidget a = new BaseTutorialWidget(
|
new ShowEnableTutorialWidget(
|
||||||
"tutorial",
|
"tutorial",
|
||||||
|
() -> {
|
||||||
|
AppSettings.getSettings().setFirstTTT(false);
|
||||||
|
new TicTacToeTutorialWidget();
|
||||||
|
},
|
||||||
() -> {
|
() -> {
|
||||||
AppSettings.getSettings().setFirstTTT(false);
|
AppSettings.getSettings().setFirstTTT(false);
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
new TicTacToeGameThread(information);
|
new TicTacToeGameThread(information);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
() -> {
|
|
||||||
ViewWidget c = new TicTacToeTutorialWidget();
|
|
||||||
transitionNext(c);
|
|
||||||
WidgetContainer.setCurrentView(c);
|
|
||||||
AppSettings.getSettings().setFirstTTT(false);
|
|
||||||
},
|
|
||||||
() -> {
|
() -> {
|
||||||
AppSettings.getSettings().setTutorialFlag(false);
|
AppSettings.getSettings().setTutorialFlag(false);
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
new TicTacToeGameThread(information);
|
new TicTacToeGameThread(information);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
transitionNext(a);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
new TicTacToeGameThread(information);
|
new TicTacToeGameThread(information);
|
||||||
break;
|
break;
|
||||||
case REVERSI:
|
case REVERSI:
|
||||||
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstReversi()) {
|
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstReversi()) {
|
||||||
BaseTutorialWidget a = new BaseTutorialWidget(
|
new ShowEnableTutorialWidget(
|
||||||
"tutorial",
|
"tutorial",
|
||||||
() -> { Platform.runLater(() -> {
|
() -> {
|
||||||
AppSettings.getSettings().setFirstReversi(false);
|
AppSettings.getSettings().setFirstTTT(false);
|
||||||
|
new ReversiTutorialWidget();
|
||||||
|
},
|
||||||
|
() -> {
|
||||||
|
AppSettings.getSettings().setFirstTTT(false);
|
||||||
|
Platform.runLater(() -> {
|
||||||
new ReversiGame(information);
|
new ReversiGame(information);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
() -> {
|
() -> {
|
||||||
Platform.runLater(() -> {
|
|
||||||
ViewWidget c = new ReversiTutorialWidget();
|
|
||||||
transitionNext(c);
|
|
||||||
WidgetContainer.setCurrentView(c);
|
|
||||||
AppSettings.getSettings().setFirstReversi(false);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
() -> {
|
|
||||||
Platform.runLater(() -> {
|
|
||||||
AppSettings.getSettings().setTutorialFlag(false);
|
AppSettings.getSettings().setTutorialFlag(false);
|
||||||
|
Platform.runLater(() -> {
|
||||||
new ReversiGame(information);
|
new ReversiGame(information);
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
transitionNext(a);
|
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
new ReversiGame(information);
|
new ReversiGame(information);
|
||||||
break;
|
break;
|
||||||
case CONNECT4:
|
case CONNECT4:
|
||||||
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstConnect4()) {
|
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstConnect4()) {
|
||||||
BaseTutorialWidget a = new BaseTutorialWidget(
|
new ShowEnableTutorialWidget(
|
||||||
"tutorial",
|
"tutorial",
|
||||||
() -> { Platform.runLater(() -> {
|
() -> {
|
||||||
AppSettings.getSettings().setFirstConnect4(false);
|
AppSettings.getSettings().setFirstTTT(false);
|
||||||
|
new Connect4TutorialWidget();
|
||||||
|
},
|
||||||
|
() -> {
|
||||||
|
AppSettings.getSettings().setFirstTTT(false);
|
||||||
|
Platform.runLater(() -> {
|
||||||
new Connect4Game(information);
|
new Connect4Game(information);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
() -> {
|
() -> {
|
||||||
Platform.runLater(() -> {
|
|
||||||
ViewWidget c = new Connect4TutorialWidget();
|
|
||||||
transitionNext(c);
|
|
||||||
WidgetContainer.setCurrentView(c);
|
|
||||||
AppSettings.getSettings().setFirstConnect4(false);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
() -> {
|
|
||||||
Platform.runLater(() -> {
|
|
||||||
AppSettings.getSettings().setTutorialFlag(false);
|
AppSettings.getSettings().setTutorialFlag(false);
|
||||||
|
Platform.runLater(() -> {
|
||||||
new Connect4Game(information);
|
new Connect4Game(information);
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
transitionNext(a);
|
|
||||||
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
new Connect4Game(information);
|
new Connect4Game(information);
|
||||||
|
|||||||
Reference in New Issue
Block a user