diff --git a/.idea/dictionaries/project.xml b/.idea/dictionaries/project.xml index e638523..e6d7540 100644 --- a/.idea/dictionaries/project.xml +++ b/.idea/dictionaries/project.xml @@ -5,6 +5,7 @@ clid dcompile errorprone + español flushnl gaaf gamelist diff --git a/app/src/main/java/org/toop/app/GameInformation.java b/app/src/main/java/org/toop/app/GameInformation.java index 5a17c8f..d8f8390 100644 --- a/app/src/main/java/org/toop/app/GameInformation.java +++ b/app/src/main/java/org/toop/app/GameInformation.java @@ -22,6 +22,17 @@ public class GameInformation { public int getMaxDepth() { return maxDepth; } + + public String getTypeToString() { + String name = this.name(); + return switch (name) { + case "TICTACTOE" -> "TicTacToe"; + case "REVERSI" -> "Reversi"; + case "CONNECT4" -> "Connect4"; + case "BATTLESHIP" -> "Battleship"; + default -> name; + }; + } } public static class Player { diff --git a/app/src/main/java/org/toop/app/game/BaseGameThread.java b/app/src/main/java/org/toop/app/game/BaseGameThread.java index f9178da..984672d 100644 --- a/app/src/main/java/org/toop/app/game/BaseGameThread.java +++ b/app/src/main/java/org/toop/app/game/BaseGameThread.java @@ -47,16 +47,17 @@ public abstract class BaseGameThread { this.game = gameSupplier.get(); this.ai = aiSupplier.get(); - if (onForfeit == null || onExit == null) { - primary = new GameView(null, () -> { - isRunning.set(false); - WidgetContainer.getCurrentView().transitionPrevious(); - }, null); + String type = information.type.getTypeToString(); + if (onForfeit == null || onExit == null) { + primary = new GameView(null, () -> { + isRunning.set(false); + WidgetContainer.getCurrentView().transitionPrevious(); + }, null, type); } else { primary = new GameView(onForfeit, () -> { isRunning.set(false); onExit.run(); - }, onMessage); + }, onMessage, type); } this.canvas = canvasFactory.apply(this::onCellClicked); diff --git a/app/src/main/java/org/toop/app/game/Connect4Game.java b/app/src/main/java/org/toop/app/game/Connect4Game.java index 8774fd7..186199f 100644 --- a/app/src/main/java/org/toop/app/game/Connect4Game.java +++ b/app/src/main/java/org/toop/app/game/Connect4Game.java @@ -5,9 +5,8 @@ import javafx.scene.paint.Color; import org.toop.app.App; import org.toop.app.GameInformation; import org.toop.app.canvas.Connect4Canvas; -import org.toop.app.view.ViewStack; -import org.toop.app.view.views.GameView; -import org.toop.app.view.views.LocalMultiplayerView; +import org.toop.app.widget.view.GameView; +import org.toop.app.widget.WidgetContainer; import org.toop.framework.eventbus.EventFlow; import org.toop.framework.networking.events.NetworkEvents; import org.toop.game.Connect4.Connect4; @@ -31,7 +30,7 @@ public class Connect4Game { private final int columnSize = 7; private final int rowSize = 6; - private final GameView view; + private final GameView primary; private final Connect4Canvas canvas; private final AtomicBoolean isRunning; @@ -49,15 +48,15 @@ public class Connect4Game { isRunning = new AtomicBoolean(true); if (onForfeit == null || onExit == null) { - view = new GameView(null, () -> { + primary = new GameView(null, () -> { isRunning.set(false); - ViewStack.push(new LocalMultiplayerView(information)); - }, null); + WidgetContainer.getCurrentView().transitionPrevious(); + }, null, "Connect4"); } else { - view = new GameView(onForfeit, () -> { + primary = new GameView(onForfeit, () -> { isRunning.set(false); onExit.run(); - }, onMessage); + }, onMessage, "Connect4"); } canvas = new Connect4Canvas(Color.GRAY, @@ -82,8 +81,8 @@ public class Connect4Game { } }); - view.add(Pos.CENTER, canvas.getCanvas()); - ViewStack.push(view); + primary.add(Pos.CENTER, canvas.getCanvas()); + WidgetContainer.getCurrentView().transitionNext(primary); if (onForfeit == null || onExit == null) { new Thread(this::localGameThread).start(); @@ -91,8 +90,7 @@ public class Connect4Game { } else { new EventFlow() .listen(NetworkEvents.GameMoveResponse.class, this::onMoveResponse) - .listen(NetworkEvents.YourTurnResponse.class, this::onYourTurnResponse) - .listen(NetworkEvents.ReceivedMessage.class, this::onReceivedMessage); + .listen(NetworkEvents.YourTurnResponse.class, this::onYourTurnResponse); setGameLabels(myTurn == 0); } @@ -108,7 +106,7 @@ public class Connect4Game { final String currentValue = currentTurn == 0? "RED" : "BLUE"; final int nextTurn = (currentTurn + 1) % information.type.getPlayerCount(); - view.nextPlayer(information.players[currentTurn].isHuman, + primary.nextPlayer(information.players[currentTurn].isHuman, information.players[currentTurn].name, currentValue, information.players[nextTurn].name); @@ -158,9 +156,9 @@ public class Connect4Game { */ if (state != Game.State.NORMAL) { if (state == Game.State.WIN) { - view.gameOver(true, information.players[currentTurn].name); + primary.gameOver(true, information.players[currentTurn].name); } else if (state == Game.State.DRAW) { - view.gameOver(false, ""); + primary.gameOver(false, ""); } isRunning.set(false); @@ -187,14 +185,14 @@ public class Connect4Game { if (state != Game.State.NORMAL) { if (state == Game.State.WIN) { if (response.player().equalsIgnoreCase(information.players[0].name)) { - view.gameOver(true, information.players[0].name); + primary.gameOver(true, information.players[0].name); gameOver(); } else { - view.gameOver(false, information.players[1].name); + primary.gameOver(false, information.players[1].name); gameOver(); } } else if (state == Game.State.DRAW) { - view.gameOver(false, ""); + primary.gameOver(false, ""); gameOver(); } } @@ -242,14 +240,6 @@ public class Connect4Game { .postEvent(); } - private void onReceivedMessage(NetworkEvents.ReceivedMessage msg) { - if (!isRunning.get()) { - return; - } - - view.updateChat(msg.message()); - } - private void updateCanvas() { canvas.clearAll(); @@ -266,7 +256,7 @@ public class Connect4Game { final int currentTurn = game.getCurrentTurn(); final String currentValue = currentTurn == 0? "RED" : "BLUE"; - view.nextPlayer(isMe, + primary.nextPlayer(isMe, information.players[isMe? 0 : 1].name, currentValue, information.players[isMe? 1 : 0].name); diff --git a/app/src/main/java/org/toop/app/game/ReversiGame.java b/app/src/main/java/org/toop/app/game/ReversiGame.java index 430cf63..8148edb 100644 --- a/app/src/main/java/org/toop/app/game/ReversiGame.java +++ b/app/src/main/java/org/toop/app/game/ReversiGame.java @@ -53,12 +53,12 @@ public final class ReversiGame { primary = new GameView(null, () -> { isRunning.set(false); WidgetContainer.getCurrentView().transitionPrevious(); - }, null); + }, null, "Reversi"); } else { primary = new GameView(onForfeit, () -> { isRunning.set(false); onExit.run(); - }, onMessage); + }, onMessage, "Reversi"); } canvas = new ReversiCanvas(Color.BLACK, diff --git a/app/src/main/java/org/toop/app/game/TicTacToeGame.java b/app/src/main/java/org/toop/app/game/TicTacToeGame.java index 2c4fb1e..e4b6da8 100644 --- a/app/src/main/java/org/toop/app/game/TicTacToeGame.java +++ b/app/src/main/java/org/toop/app/game/TicTacToeGame.java @@ -50,12 +50,12 @@ public final class TicTacToeGame { primary = new GameView(null, () -> { isRunning.set(false); WidgetContainer.getCurrentView().transitionPrevious(); - }, null); + }, null, "TicTacToe"); } else { primary = new GameView(onForfeit, () -> { isRunning.set(false); onExit.run(); - }, onMessage); + }, onMessage, "TicTacToe"); } canvas = new TicTacToeCanvas(Color.GRAY, diff --git a/app/src/main/java/org/toop/app/widget/tutorial/Connect4TutorialWidget.java b/app/src/main/java/org/toop/app/widget/tutorial/Connect4TutorialWidget.java new file mode 100644 index 0000000..1fdd4e3 --- /dev/null +++ b/app/src/main/java/org/toop/app/widget/tutorial/Connect4TutorialWidget.java @@ -0,0 +1,39 @@ +package org.toop.app.widget.tutorial; + +import javafx.geometry.Pos; +import org.toop.app.widget.complex.ViewWidget; + +import java.io.File; + +public class Connect4TutorialWidget extends ViewWidget { + private TState state; + 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 BaseTutorialWidget tutorialWidget; + + public Connect4TutorialWidget() { + this.state = new TState(keys.length); + tutorialWidget = new BaseTutorialWidget( + state, + keys[state.getCurrent()], + images[state.getCurrent()], + () -> { + if (state.hasPrevious()) { + state.previous(); + update(); + } + }, + () -> { + if (state.hasNext()) { + state.next(); + update(); + } + } + ); + add(Pos.CENTER, tutorialWidget); + } + + private void update() { + tutorialWidget.update(keys[state.getCurrent()], images[state.getCurrent()]); + } +} diff --git a/app/src/main/java/org/toop/app/widget/tutorial/ReversiTutorialWidget.java b/app/src/main/java/org/toop/app/widget/tutorial/ReversiTutorialWidget.java new file mode 100644 index 0000000..1ec990a --- /dev/null +++ b/app/src/main/java/org/toop/app/widget/tutorial/ReversiTutorialWidget.java @@ -0,0 +1,39 @@ +package org.toop.app.widget.tutorial; + +import javafx.geometry.Pos; +import org.toop.app.widget.complex.ViewWidget; + +import java.io.File; + +public class ReversiTutorialWidget extends ViewWidget { + private TState state; + private String[] keys = {"reversi1", "reversi2", "reversi3", "reversi4"}; + 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() { + this.state = new TState(keys.length); + tutorialWidget = new BaseTutorialWidget( + state, + keys[state.getCurrent()], + images[state.getCurrent()], + () -> { + if (state.hasPrevious()) { + state.previous(); + update(); + } + }, + () -> { + if (state.hasNext()) { + state.next(); + update(); + } + } + ); + add(Pos.CENTER, tutorialWidget); + } + + private void update() { + tutorialWidget.update(keys[state.getCurrent()], images[state.getCurrent()]); + } +} diff --git a/app/src/main/java/org/toop/app/widget/tutorial/TicTacToeTutorialWidget.java b/app/src/main/java/org/toop/app/widget/tutorial/TicTacToeTutorialWidget.java index 60c1293..85355a4 100644 --- a/app/src/main/java/org/toop/app/widget/tutorial/TicTacToeTutorialWidget.java +++ b/app/src/main/java/org/toop/app/widget/tutorial/TicTacToeTutorialWidget.java @@ -15,7 +15,6 @@ public class TicTacToeTutorialWidget extends ViewWidget { private BaseTutorialWidget tutorialWidget; public TicTacToeTutorialWidget() { - System.out.println("Hi, I got here!"); this.state = new TState(keys.length); tutorialWidget = new BaseTutorialWidget( state, @@ -34,7 +33,6 @@ public class TicTacToeTutorialWidget extends ViewWidget { } } ); - System.out.println("Hi, I got to the end!"); add(Pos.CENTER, tutorialWidget); } diff --git a/app/src/main/java/org/toop/app/widget/view/GameView.java b/app/src/main/java/org/toop/app/widget/view/GameView.java index df1b411..334aa51 100644 --- a/app/src/main/java/org/toop/app/widget/view/GameView.java +++ b/app/src/main/java/org/toop/app/widget/view/GameView.java @@ -11,6 +11,10 @@ import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.control.TextField; import javafx.scene.text.Text; +import org.toop.app.widget.tutorial.BaseTutorialWidget; +import org.toop.app.widget.tutorial.Connect4TutorialWidget; +import org.toop.app.widget.tutorial.ReversiTutorialWidget; +import org.toop.app.widget.tutorial.TicTacToeTutorialWidget; public final class GameView extends ViewWidget { private final Text currentPlayerHeader; @@ -18,10 +22,10 @@ public final class GameView extends ViewWidget { private final Text nextPlayerHeader; private final Button forfeitButton; private final Button exitButton; - + private final Button tutorialButton; private final TextField chatInput; - public GameView(Runnable onForfeit, Runnable onExit, Consumer onMessage) { + public GameView(Runnable onForfeit, Runnable onExit, Consumer onMessage, String gameType) { currentPlayerHeader = Primitive.header(""); currentMoveHeader = Primitive.header(""); nextPlayerHeader = Primitive.header(""); @@ -47,6 +51,27 @@ public final class GameView extends ViewWidget { chatInput = null; } + switch(gameType) { + case "TicTacToe": + this.tutorialButton = Primitive.button("tutorialstring", () -> { + transitionNext(new TicTacToeTutorialWidget()); + }); + break; + case "Reversi": + this.tutorialButton = Primitive.button("tutorialstring", () -> { + transitionNext(new ReversiTutorialWidget()); + }); + break; + case "Connect4": + this.tutorialButton = Primitive.button("tutorialstring", () -> { + transitionNext(new Connect4TutorialWidget()); + }); + break; + default: + this.tutorialButton = null; + break; + } + setupLayout(); } @@ -73,6 +98,10 @@ public final class GameView extends ViewWidget { if (chatInput != null) { add(Pos.BOTTOM_RIGHT, Primitive.vbox(chatInput)); } + + if (tutorialButton != null) { + add(Pos.TOP_LEFT, tutorialButton); + } } public void nextPlayer(boolean isMe, String currentPlayer, String currentMove, String nextPlayer) { diff --git a/app/src/main/java/org/toop/app/widget/view/LocalMultiplayerView.java b/app/src/main/java/org/toop/app/widget/view/LocalMultiplayerView.java index de5c9fd..5cab8b7 100644 --- a/app/src/main/java/org/toop/app/widget/view/LocalMultiplayerView.java +++ b/app/src/main/java/org/toop/app/widget/view/LocalMultiplayerView.java @@ -11,6 +11,8 @@ import org.toop.app.widget.complex.PlayerInfoWidget; import org.toop.app.widget.complex.ViewWidget; import org.toop.app.widget.popup.ErrorPopup; import org.toop.app.widget.tutorial.BaseTutorialWidget; +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; @@ -37,8 +39,6 @@ public class LocalMultiplayerView extends ViewWidget { switch (information.type) { case TICTACTOE: - System.out.println(AppSettings.getSettings().getTutorialFlag()); - System.out.println(AppSettings.getSettings().getFirstTTT()); if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstTTT()) { BaseTutorialWidget a = new BaseTutorialWidget( "tutorial", @@ -49,11 +49,10 @@ public class LocalMultiplayerView extends ViewWidget { }); }, () -> { - Platform.runLater(() -> { ViewWidget c = new TicTacToeTutorialWidget(); transitionNext(c); WidgetContainer.setCurrentView(c); - }); + AppSettings.getSettings().setFirstTTT(false); }, () -> { AppSettings.getSettings().setTutorialFlag(false); @@ -67,11 +66,65 @@ public class LocalMultiplayerView extends ViewWidget { } new TicTacToeGameThread(information); break; - case REVERSI: new ReversiGame(information); - case CONNECT4: new Connect4Game(information); + case REVERSI: + if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstReversi()) { + BaseTutorialWidget a = new BaseTutorialWidget( + "tutorial", + () -> { Platform.runLater(() -> { + AppSettings.getSettings().setFirstReversi(false); + new ReversiGame(information); + }); + }, + () -> { + Platform.runLater(() -> { + ViewWidget c = new ReversiTutorialWidget(); + transitionNext(c); + WidgetContainer.setCurrentView(c); + AppSettings.getSettings().setFirstReversi(false); + }); + }, + () -> { + Platform.runLater(() -> { + AppSettings.getSettings().setTutorialFlag(false); + new ReversiGame(information); + }); + }); + transitionNext(a); + break; + } + new ReversiGame(information); + break; + case CONNECT4: + if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstConnect4()) { + BaseTutorialWidget a = new BaseTutorialWidget( + "tutorial", + () -> { Platform.runLater(() -> { + AppSettings.getSettings().setFirstConnect4(false); + new Connect4Game(information); + }); + }, + () -> { + Platform.runLater(() -> { + ViewWidget c = new Connect4TutorialWidget(); + transitionNext(c); + WidgetContainer.setCurrentView(c); + AppSettings.getSettings().setFirstConnect4(false); + }); + }, + () -> { + Platform.runLater(() -> { + AppSettings.getSettings().setTutorialFlag(false); + new Connect4Game(information); + }); + }); + transitionNext(a); + break; + } + new Connect4Game(information); + break; + } // case BATTLESHIP -> new BattleshipGame(information); - } - }); + }); var playerSection = setupPlayerSections(); diff --git a/app/src/main/java/org/toop/local/AppSettings.java b/app/src/main/java/org/toop/local/AppSettings.java index 7a49fdf..375b0a3 100644 --- a/app/src/main/java/org/toop/local/AppSettings.java +++ b/app/src/main/java/org/toop/local/AppSettings.java @@ -21,7 +21,7 @@ public class AppSettings { settingsAsset.load(); } - doDefaultSettings(); + checkSettings(); Settings settingsData = settingsAsset.getContent(); diff --git a/app/src/main/resources/assets/images/connect41.png b/app/src/main/resources/assets/images/connect41.png new file mode 100644 index 0000000..282ac20 Binary files /dev/null and b/app/src/main/resources/assets/images/connect41.png differ diff --git a/app/src/main/resources/assets/images/connect42.png b/app/src/main/resources/assets/images/connect42.png new file mode 100644 index 0000000..6a01f03 Binary files /dev/null and b/app/src/main/resources/assets/images/connect42.png differ diff --git a/app/src/main/resources/assets/images/reversi1.png b/app/src/main/resources/assets/images/reversi1.png new file mode 100644 index 0000000..a99da40 Binary files /dev/null and b/app/src/main/resources/assets/images/reversi1.png differ diff --git a/app/src/main/resources/assets/images/reversi2.png b/app/src/main/resources/assets/images/reversi2.png new file mode 100644 index 0000000..9a823bb Binary files /dev/null and b/app/src/main/resources/assets/images/reversi2.png differ diff --git a/app/src/main/resources/assets/localization/localization_ar.properties b/app/src/main/resources/assets/localization/localization_ar.properties index bd29908..39a02fb 100644 --- a/app/src/main/resources/assets/localization/localization_ar.properties +++ b/app/src/main/resources/assets/localization/localization_ar.properties @@ -5,6 +5,7 @@ are-you-sure=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f? back=\u0627\u0644\u0631\u062c\u0648\u0639 cancel=\u0625\u0644\u063a\u0627\u0621 challenge=\u062a\u062d\u062f\u064a +connect4=Connect 4 computer-difficulty=\u0635\u0639\u0648\u0628 \u0627\u0644\u0643\u0645\u0628\u064a\u0648\u062a\u0631 computer-think-time=\u0648\u0642\u062a \u062a\u0641\u0643\u064a\u0631 \u0627\u0644\u0643\u0645\u0628\u064a\u0648\u062a\u0631 computer=\u0643\u0645\u0628\u064a\u0648\u062a\u0631 @@ -75,6 +76,13 @@ you-were-challenged-by=\u062a\u062d\u062f\u064a\u062a \u0645\u0646 you-win=\u0623\u0646\u062a \u062a\u0641\u0648\u0632 >=> <=< +connect4.1=\u0645\u0631\u062d\u0628\u0627 \u0628\u0643 \u0641\u064a \u0644\u0639\u0628\u0629 Connect 4! \u064a\u0645\u0643\u0646\u0643 \u062a\u0633\u0645\u064a\u0629 \u0627\u0644\u0644\u0639\u0628 \u0645\u0646 \u0637\u0631\u0641 \u0645\u0646 \u0627\u0644\u0639\u0645\u0648\u062f\u0627\u062a. \u0633\u064a\u062a\u0645 \u0648\u0636\u0639 \u0627\u0644\u0644\u062d\u0629 \u0627\u0644\u0623\u0642\u0644 \u0641\u064a \u062a\u0644\u0643 \u0627\u0644\u0639\u0645\u0648\u062f\u0629 \u0627\u0644\u0645\u0644\u0623\u0629 \u0627\u0644\u062a\u064a \u0644\u064a\u0633\u062a\u0645\u0644\u0623 \u0627\u0644\u0645\u0644\u0623\u0629. +connect4.2=\u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u0641\u0648\u0632 \u0628\u0647\u0632\u0645 \u0623\u0631\u062c\u0639 \u0645\u0646 \u0627\u0644\u0642\u0637\u0639 \u0627\u0644\u0641\u064a \u0627\u0644\u0623\u0641\u0642 \u0623\u0648 \u0627\u0644\u0645\u064a\u0646 \u0623\u0648 \u0623\u0641\u0642 \u0639\u0644\u0649 \u0627\u0644\u0645\u0644\u0623\u0629! +reversi1=\u0645\u0631\u062d\u0628\u0627 \u0628\u0643 \u0641\u064a \u0644\u0639\u0628\u0629 Reversi! \u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u0644\u0639\u0628 \u0628\u0627\u0644\u0646\u0642\u0631 \u0639\u0644\u0649 \u0623\u064a \u0646\u0642\u0637\u0629 \u0645\u0634\u0631\u0641\u0629. +reversi2=\u0639\u0646\u062f\u0645\u0627 \u062a\u0646\u0642\u0631 \u0639\u0644\u0649 \u0646\u0642\u0637\u0629 \u0633\u064a\u062a\u063a\u064a\u0631 \u062c\u0645\u064a\u0639 \u0627\u0644\u0644\u0648\u0639\u0627\u0628 \u0628\u064a\u0646 \u0645\u0643\u0627\u0646 \u062a\u0636\u0639 \u0627\u0644\u0646\u0642\u0637\u0629 \u0648\u0646\u0642\u0637\u0629 \u0627\u0644\u0644\u0648\u0639 \u0627\u0644\u062a\u0627\u0644\u064a \u0627\u0644\u0645\u0648\u062c\u0648\u062f. +reversi3=\u0645\u0631\u062a\u0643 \u0642\u062f \u064a\u062a\u063a\u0627\u0637 \u0625\u0630\u0627 \u0644\u0645 \u064a\u0643\u0646 \u0647\u0646\u0627\u0643 \u062d\u0631\u0643 \u0642\u0627\u0646\u0648\u0646\u064a. +reversi4=\u0627\u0644\u0644\u0627\u0639\u0628 \u0627\u0644\u0630\u064a \u064a\u0641\u0648\u0632 \u0641\u064a \u0646\u0647\u0627\u064a\u0629 \u0627\u0644\u0644\u0639\u0628 \u0647\u0648 \u0627\u0644\u0630\u064a \u064a\u0643\u0648\u0646 \u0644\u062f\u064a\u0647 \u0627\u0644\u0623\u0643\u062b\u0631 \u0645\u0646 \u0627\u0644\u0644\u0648\u0639\u0627\u0628 \u0639\u0644\u0649 \u0627\u0644\u0644\u0648\u062d\u0629. +tutorialstring=\u0627\u0644\u062f\u0631\u0633 \u0627\u0644\u062a\u0648\u0636\u064a\u062d\u064a arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 chinese=\u4e2d\u6587 (\u0627\u0644\u0635\u064a\u0646\u064a\u0629) diff --git a/app/src/main/resources/assets/localization/localization_de.properties b/app/src/main/resources/assets/localization/localization_de.properties index 16e24cd..186cd76 100644 --- a/app/src/main/resources/assets/localization/localization_de.properties +++ b/app/src/main/resources/assets/localization/localization_de.properties @@ -9,6 +9,8 @@ computer-difficulty=Computer Schwierigkeit computer-think-time=Computer Denkzeit computer=Computer connect=Verbinden +connect4=Connect 4 + credits=Credits dark=Dunkel deny=Ablehnen @@ -76,6 +78,13 @@ you-were-challenged-by=Sie wurden herausgefordert von ... you-win=Sie gewinnen >=> <=< +connect4.1=Willkommen beim Spiel Connect 4! Du kannst einen Zug machen, indem du auf eine der Spalten klickst. Der Zug wird in der niedrigsten noch freien Reihe dieser Spalte platziert. +connect4.2=Du kannst gewinnen, indem du 4 Spielsteine deiner Farbe horizontal, diagonal oder vertikal verbindest! Siehe das obige Beispiel. +reversi1=Willkommen beim Spiel Reversi! Du kannst einen Zug machen, indem du auf einen der leicht transparenten Punkte klickst. +reversi2=Wenn du auf einen Punkt klickst, werden alle Spielsteine dazwischen umgedreht, bis zum nächsten Punkt. Siehe das Beispiel oben, wo Gelb die zu drehenden Steine ist. +reversi3=Dein Zug kann übersprungen werden, wenn es keinen legalen Zug gibt. Dein Gegner spielt dann weiter, bis du einen legalen Zug machen kannst. +reversi4=Der Spieler, der am Ende die meisten Steine auf dem Brett hat, gewinnt. +tutorialstring=Tutorial arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (Arabisch) chinese=\u4e2d\u6587 (Chinesisch) diff --git a/app/src/main/resources/assets/localization/localization_en.properties b/app/src/main/resources/assets/localization/localization_en.properties index d19f27e..d0e20b0 100644 --- a/app/src/main/resources/assets/localization/localization_en.properties +++ b/app/src/main/resources/assets/localization/localization_en.properties @@ -42,7 +42,7 @@ moral-support=Moral Support music-volume=Music Volume name=Name no=No -never=No, I never wanna see any tutorials +never=No, I never want to see any tutorials ok=Ok online=Online opengl=OpenGL @@ -76,6 +76,15 @@ you-were-challenged-by=You were challenged by you-win=You win >=> <=< +// tutorial +connect4.1=Welcome to the game of Connect 4! You can make a move by clicking one of the columns. The move will be placed in the lowest row of that column that is not filled yet. +connect4.2=You can win by getting 4 pieces of your row horizontally, diagonally or vertically! For an example, see above. +reversi1=Welcome to the game of Reversi! You can make a move by clicking on one of the slightly transparent dots. +reversi2=Clicking on a dot will flip all the moves between where you place the dot and the next dot it finds. See the example above, where yellow is the moves to be flipped. +reversi3=Your turn may be skipped if there is no legal move. This will let your opponent play again until you get an opportunity at a legal move. +reversi4=The player who wins at the end of the game is the one who has the most pieces on the board. +tutorialstring=Tutorial + arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (Arabic) chinese=\u4e2d\u6587 (Chinese) diff --git a/app/src/main/resources/assets/localization/localization_es.properties b/app/src/main/resources/assets/localization/localization_es.properties index 0407d27..4db0b7d 100644 --- a/app/src/main/resources/assets/localization/localization_es.properties +++ b/app/src/main/resources/assets/localization/localization_es.properties @@ -9,6 +9,8 @@ computer-difficulty=Dificultad del ordenador computer-think-time=Tiempo de pensamiento del ordenador computer=Ordenador connect=Conectar +connect4=Connect 4 + credits=Cr\u00e9ditos dark=Oscuro deny=Denegar @@ -75,6 +77,14 @@ you-were-challenged-by=Fuiste desafiado por you-win=Ganaste >=> <=< +connect4.1=\u00a1Bienvenido al juego de Connect 4! Puedes hacer un movimiento haciendo clic en una de las columnas. El movimiento se colocará en la fila más baja de esa columna que no esté llena. +connect4.2=\u00a1Puedes ganar consiguiendo 4 fichas de tu color horizontal, diagonal o verticalmente! Mira el ejemplo de arriba. +reversi1=\u00a1Bienvenido al juego de Reversi! Puedes hacer un movimiento haciendo clic en uno de los puntos ligeramente transparentes. +reversi2=Al hacer clic en un punto, se voltearán todas las fichas entre donde colocas el punto y el siguiente punto que encuentre. Mira el ejemplo de arriba, donde amarillo son las fichas a voltear. +reversi3=Tu turno puede ser saltado si no hay un movimiento legal. Esto permitirá que tu oponente juegue nuevamente hasta que tengas una oportunidad legal. +reversi4=El jugador que gane al final del juego es quien tenga más fichas en el tablero. +tutorialstring=Tutorial + arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (Ar\u00e1bigo) chinese=\u4e2d\u6587 (Chino) diff --git a/app/src/main/resources/assets/localization/localization_fr.properties b/app/src/main/resources/assets/localization/localization_fr.properties index 91a7f21..eda968e 100644 --- a/app/src/main/resources/assets/localization/localization_fr.properties +++ b/app/src/main/resources/assets/localization/localization_fr.properties @@ -9,6 +9,8 @@ computer-difficulty=Difficult\u00e9 de l'ordinateur computer-think-time=Temps de r\u00e9flexion de l'ordinateur computer=Ordinateur connect=Connexion +connect4=Connect 4 + credits=Cr\u00e9dits dark=Sombre deny=Refuser @@ -75,6 +77,13 @@ you-were-challenged-by=Vous avez \u00e9t\u00e9 d\u00e9fi\u00e9 par you-win=Vous avez gagn\u00e9 >=> <=< +connect4.1=Bienvenue dans le jeu Connect 4 ! Vous pouvez effectuer un mouvement en cliquant sur l'une des colonnes. Le mouvement sera placé dans la ligne la plus basse de cette colonne qui n'est pas encore remplie. +connect4.2=Vous pouvez gagner en alignant 4 pions de votre couleur horizontalement, diagonalement ou verticalement ! Voir l'exemple ci-dessus. +reversi1=Bienvenue dans le jeu Reversi ! Vous pouvez jouer en cliquant sur l'un des points légčrement transparents. +reversi2=Cliquer sur un point retournera tous les pions entre le point placé et le prochain point trouvé. Voir l'exemple ci-dessus, oů le jaune indique les pions ŕ retourner. +reversi3=Votre tour peut ętre sauté s'il n'y a pas de coup légal. Cela permettra ŕ votre adversaire de jouer jusqu'ŕ ce que vous ayez un coup légal. +reversi4=Le joueur qui a le plus de pions ŕ la fin du jeu gagne. +tutorialstring=Tutoriel arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (Arabe) chinese=\u4e2d\u6587 (Chinois) diff --git a/app/src/main/resources/assets/localization/localization_hi.properties b/app/src/main/resources/assets/localization/localization_hi.properties index 559c5ae..15990f9 100644 --- a/app/src/main/resources/assets/localization/localization_hi.properties +++ b/app/src/main/resources/assets/localization/localization_hi.properties @@ -9,6 +9,8 @@ computer-difficulty=\u0915\u0902\u092a\u094d\u092f\u0942\u091f\u0930 \u0915\u094 computer-think-time=\u0915\u0902\u092a\u094d\u092f\u0942\u091f\u0930 \u091a\u093f\u0902\u0924\u0928 \u0938\u092e\u092f computer=\u0915\u0902\u092a\u094d\u092f\u0942\u091f\u0930 connect=\u091c\u094b\u095c\u0947\u0902 +connect4=Connect 4 + credits=\u0915\u094d\u0930\u0947\u0921\u093f\u091f\u094d\u0938 dark=\u0917\u0939\u0930\u093e deny=\u0907\u0902\u0915\u093e\u0930 @@ -75,6 +77,13 @@ you-were-challenged-by=\u0906\u092a\u0915\u094b \u091a\u0941\u0928\u094c\u0924\u you-win=\u0906\u092a \u091c\u0940\u0924 \u0917\u090f >=> <=< +connect4.1=\u0915\u0928\u094d\u0928\u0947 \u0915\u0940 \u091c\u0948 \u0915\u0947 \u091c\u094c\u0915 \u0915\u0928\u0947\u0915\u094d\u091f 4 \u092e\u0947\u0902! \u0906\u092a \u0915\u0940 \u091a\u0948\u0928 \u092a\u0932\u0938 \u092a\u0928\u094d\u0928 \u0928\u093e\u092e\u094d\u092c\u0921\u093e\u0928\u0947 \u0915\u0940 \u092f\u094b\u0917\u0924\u0940 \u092e\u0947\u0902 \u0915\u0940 \u0928\u093f\u091a\u094d\u091a\u0942\u0928 \u0915\u0940 \u0924\u0939 \u091a\u093f\u0928 \u092a\u0924\u093f \u0928\u0939\u0940\u0902 \u0926\u0947 \u092c\u0924\u0940. +connect4.2=\u092a\u093e\u0902\u091a \u092e\u0946\u092c\u0921 \u0915\u0940 \u092a\u0930\u092a\u0930\u092f\u094d\u0928 \u092d\u093e\u0935\u0940 \u0938\u0947 4 \u092a\u093f\u0938 \u0924\u093e\u0924\u093e \u0915\u0940 \u0930\u094f\u0936\u0942 \u0938\u0940\u0926\u094d\u0927 \u092e\u0947\u0902 \u092a\u0940\u0928\u094d\u0928\u094b\u0902 \u0915\u0940 \u092e\u093e\u0928\u094d\u0926\u0930 \u0939\u0940. +reversi1=\u0915\u0928\u094d\u0928\u0947 \u0915\u0940 \u091c\u0948 \u0910 \u0930\u0947\u0935\u0930\u094d\u0938\u0940 \u092e\u0947\u0902 \u0926\u0948\u091a \u092c\u0922\u093e\u0928 \u0915\u0940 \u092a\u0924\u094d\u0928 \u092a\u0930 \u092a\u094d\u0932\u0947 \u0916\u0942\u0928\u0947 \u0915\u0940 \u092a\u094d\u0930\u092f\u0948\u0915\u0944 \u0915\u0930\u0948\u0902. +reversi2=\u0915\u093f\u0938 \u092a\u0930 \u092a\u093f\u0938 \u092a\u0948\u0918 \u0915\u0940 \u091a\u0928 \u092e\u0947\u0902 \u0938\u092e\u093e\u0930\u094e \u092a\u093f\u0938 \u092a\u0940\u0918 \u092e\u0947\u0902 \u092a\u0930\u093f\u0923\u0924 \u0915\u093e \u092a\u0930\u093f\u0928\u0942\u0924\u0940 \u0915\u0940 \u092a\u094d\u0930\u0924\u093f \u092a\u0941\u0928\u0940 \u092a\u0930\u093f\u0928\u094d\u0924 \u0915\u0940 \u092a\u0940\u0938 \u092a\u0930\u094d\u092f\u0928\u0947 \u091c\u093e\u0902\u0918\u0942. +reversi3=\u092f\u0939 \u092a\u0930\u094d\u092f \u0938\u0947 \u0938\u0947\u091a \u0915\u0940 \u091c\u093e\u0902\u091c \u0928\u0939\u0940\u0902 \u0939\u0948 \u0914\u0938\u0924\u0947 \u0915\u0948 \u092a\u0948\u0928 \u092a\u0930\u094d\u092f \u0939\u0948 \u0914\u092a\u0915\u0940 \u0915\u0940 \u092a\u0932\u0947 \u092d\u0942\u0924 \u0915\u0940 \u0906\u0927\u093e \u092a\u0948\u0928 \u091c\u093e\u0902\u091c \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902. +reversi4=\u0916\u0941\u092f \u0915\u093f \u0915\u0940 \u0928\u093f\u092e\u0940 \u092e\u0947\u0902 \u091a\u093e\u0932 \u0938\u092c\u0938\u0947 \u091a\u0942\u0928\u094d\u0928\u0947 \u0939\u0948, \u0935\u0949 \u0915\u0947 \u092e\u093e\u0924\u094d\u0930 \u091c\u0940\u0924\u0947 \u0939\u0948. +tutorialstring=\u0924\u0942\u091f\u0949\u0930\u093f\u092f\u0932 arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (\u0905\u0930\u092c\u0940) chinese=\u4e2d\u6587 (\u091a\u0940\u0928\u0940) diff --git a/app/src/main/resources/assets/localization/localization_it.properties b/app/src/main/resources/assets/localization/localization_it.properties index a50ffe8..ee85d99 100644 --- a/app/src/main/resources/assets/localization/localization_it.properties +++ b/app/src/main/resources/assets/localization/localization_it.properties @@ -9,6 +9,7 @@ computer-difficulty=Difficolt\u00e0 del computer computer-think-time=Tempo di riflessione del computer computer=Computer connect=Connetti +connect4=Connect 4 credits=Crediti dark=Scuro deny=Nega @@ -75,6 +76,13 @@ you-were-challenged-by=Sei stato sfidato da you-win=Hai vinto >=> <=< +connect4.1=Benvenuto nel gioco Connect 4! Puoi fare una mossa cliccando su una delle colonne. La mossa sarŕ posizionata nella riga piů bassa di quella colonna che non č ancora piena. +connect4.2=Puoi vincere ottenendo 4 pedine del tuo colore in orizzontale, diagonale o verticale! Guarda l'esempio sopra. +reversi1=Benvenuto nel gioco Reversi! Puoi fare una mossa cliccando su uno dei punti leggermente trasparenti. +reversi2=Cliccando su un punto, tutti i pezzi tra dove metti il punto e il prossimo punto trovato verranno girati. Guarda l'esempio sopra, dove il giallo indica i pezzi da girare. +reversi3=Il tuo turno puň essere saltato se non ci sono mosse legali. Questo permetterŕ al tuo avversario di giocare fino a quando non avrai un'opportunitŕ legale. +reversi4=Il giocatore che alla fine del gioco ha piů pezzi sulla scacchiera vince. +tutorialstring=Tutorial arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (Arabo) chinese=\u4e2d\u6587 (Cinese) diff --git a/app/src/main/resources/assets/localization/localization_ja.properties b/app/src/main/resources/assets/localization/localization_ja.properties index 560875c..acb03c9 100644 --- a/app/src/main/resources/assets/localization/localization_ja.properties +++ b/app/src/main/resources/assets/localization/localization_ja.properties @@ -9,6 +9,7 @@ computer-difficulty=\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u96e3\u6613\u5ea6 computer-think-time=\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u306e\u601d\u8003\u6642\u9593 computer=\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf connect=\u63a5\u7d9a +connect4=Connect 4 credits=\u30af\u30ec\u30b8\u30c3\u30c8 dark=\u30c0\u30fc\u30af deny=\u62d2\u5426 @@ -75,6 +76,13 @@ you-were-challenged-by=\u3042\u306a\u305f\u306f ... \u304b\u3089\u6311\u6226\u30 you-win=\u52dd\u5229\u3067\u3059 >=> <=< +connect4.1=\u30b3\u30cd\u30af\u30c84\u306e\u30b2\u30fc\u30e0\u3078\u3088\u3046\u3053\u305d! \u30ab\u30e9\u30e0\u306e\u4e0a\u306e\u30ab\u30e9\u30e0\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u52d5\u304b\u3057\u3092\u884c\u3048\u307e\u3059\u3002\u52d5\u304b\u3057\u306f\u3001\u3060\u307e\u308a\u306f\u307e\u3067\u5869\u3067\u306a\u3044\u884c\u306b\u8a2d\u7f6e\u3055\u308c\u307e\u3059\u3002 +connect4.2=\u6a2a\u7dda\u3001\u65b9\u5411\u306e\u307f\u3082\u306a\u3057\u3067\u30014\u3064\u306e\u8ca0\u3051\u3092\u7d50\u5408\u3055\u305b\u308b\u3068\u52dd\u3061\u307e\u3059! \u4e0a\u306e\u4f8b\u3092\u898b\u3066\u304f\u3060\u3055\u3044\u3002 +reversi1=\u30ea\u30d0\u30fc\u30b7\u30fb\u30b2\u30fc\u30e0\u3078\u3088\u3046\u3053\u305d! \u30ab\u30e9\u30e0\u306e\u30b9\u30dd\u30c3\u30c8\u30c9\u30c3\u30c8\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u52d5\u304b\u3057\u306e\u30d7\u30ec\u30a4\u304c\u3067\u304d\u307e\u3059\u3002 +reversi2=\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u3064\u306a\u304c\u308a\u3092\u542b\u3081\u305f\u8ca0\u3051\u304c\u307e\u3067\u306e\u8ca0\u3051\u304c\u5909\u308f\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 +reversi3=\u6b21\u306e\u52d5\u304b\u3057\u304c\u306a\u3044\u5834\u5408\u3001\u8a8d\u5b9a\u3055\u308c\u305f\u52d5\u304b\u3057\u306e\u6642\u9593\u306f\u62d2\u7d76\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +reversi4=\u672c\u6b21\u306b\u30dc\u30fc\u30c9\u4e0a\u3067\u6700\u591a\u306e\u8ca0\u3051\u3092\u6301\u3064\u30d7\u30ec\u30a4\u30e4\u30fc\u304c\u52dd\u3061\u307e\u3059\u3002 +tutorialstring=\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (\u30a2\u30e9\u30d3\u30a2\u8a9e) chinese=\u4e2d\u6587 (\u4e2d\u6587) diff --git a/app/src/main/resources/assets/localization/localization_ko.properties b/app/src/main/resources/assets/localization/localization_ko.properties index 4768c9d..d84d236 100644 --- a/app/src/main/resources/assets/localization/localization_ko.properties +++ b/app/src/main/resources/assets/localization/localization_ko.properties @@ -9,6 +9,7 @@ computer-difficulty=\uCEF4\uD4E8\uD130 \uC5B4\uB9AC\uAE30 computer-think-time=\uCEF4\uD4E8\uD130 \uC0DD\uAC01 \uC2DC\uAC04 computer=\uCEF4\uD4E8\uD130 connect=\uC5F0\uACB0 +connect4=Connect 4 credits=\uD06C\uB808\uB527 dark=\uC5B4\uB460 deny=\uAC70\uBD80 @@ -75,6 +76,13 @@ you-were-challenged-by=... \uB85C\uBD80\uD130 \uCC38\uC5EC \uC694\uCCAD\uC744 \u you-win=\uC774\uACBC\uC2B5\uB2C8\uB2E4 >=> <=< +connect4.1=Connect 4 \uacbd\uc6b0\uc5d0 \uc81c\uc2dc\ud569\ub2c8\ub2e4! \ud648\ub825\uc744 \ub2e4\ub978 \uc0c1\uc704\ub85c \ud074\ub9ad\ud558\uc2dc\uba70 \ub2e4\uc74c \uc815\uc758 \ud648\ub825\uc744 \ub610\ub294 \uc704\ub85c \uc0ac\uc6a9\ud558\uc2dc\uba70 \ud648\ub825\uc744 \uc124\uc815\ud569\ub2c8\ub2e4. +connect4.2=\uc0ac\uc6a9\uc790\uc758 \ud648\uc744 \uc54c\ub824 \ud574\uc8fc\uba70 \ud574\ub2f9 \ud648\uc758 4\uae38\uc744 \ud574\uc8fc\uba70 \ud655\uc9c0, \ub354\ub7ec \ubc29\uacfc \ub610\ub294 \uc0ac\uc6a9\uc790 \ud648\uc758 \uc5f4\ub9b0 \ucd5c\ub300 \ubc29\ud574\uc5d0 \uc5c6\uc74c\uc774\ub2e4! +reversi1=Reversi \uacbd\uc6b0\uc5d0 \uc81c\uc2dc\ud569\ub2c8\ub2e4! \ub2e4\ub978 \ud615\uc2dd\uc758 \ud648\uc744 \ud074\ub9ad\ud558\uc2dc\uba70 \ub2e4\uc74c \uc815\uc758 \ud648\uc744 \uc124\uc815\ud569\ub2c8\ub2e4. +reversi2=\ud074\ub9ad \ud558\uba70, \ub2e4\ub978 \ud648 \uc704\ub85c \ucd5c\uc2e0 \ubc1b\ub294 \ud648\uc5d0 \ub300\ud574 \ub2e4\uc774\ubc84\ub77c\uc758 \ud648\uc744 \ubcc0\uacbd\ud569\ub2c8\ub2e4. +reversi3=\uc0ac\uc6a9\uc790\uc758 \ud648\uc744 \ud074 \uc218 \uc5c6\uc2b5\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\uc790 \ub2f5\uc5d0 \ub300\ud574 \uc811\ub2c8\ub2e4. +reversi4=\uacbd\uc6b0 \uc5d0\uc11c \ucd5c\ub300 \ud648\uc744 \uac00\uc838\ub294 \uc0ac\uc6a9\uc790\uc774 \uc52c\uc544\uc624\uba70 \uc0ac\uc6a9\uc790\uc758 \ud648\uc744 \uc54c\ub824\ud569\ub2c8\ub2e4. +tutorialstring=\ud14c\ud2b8\ub9ad arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (\u0639\u0631\u0628\u064a\u0629) chinese=\u4e2d\u6587 (\u4e2d\u6587) diff --git a/app/src/main/resources/assets/localization/localization_nl.properties b/app/src/main/resources/assets/localization/localization_nl.properties index 2648e93..d95fbb5 100644 --- a/app/src/main/resources/assets/localization/localization_nl.properties +++ b/app/src/main/resources/assets/localization/localization_nl.properties @@ -76,6 +76,13 @@ you-were-challenged-by=Je bent uitgedaagd door you-win=Je wint >=> <=< +connect4.1=Welkom bij het spel Connect 4! Je kunt een zet doen door op een van de kolommen te klikken. De zet wordt geplaatst in de laagste nog lege rij van die kolom. +connect4.2=Je kunt winnen door 4 van je stukken horizontaal, diagonaal of verticaal op een rij te krijgen! Zie het voorbeeld hierboven. +reversi1=Welkom bij het spel Reversi! Je kunt een zet doen door op een van de licht transparante stippen te klikken. +reversi2=Door op een stip te klikken draai je alle stukken om tussen de plaats waar je de stip zet en de volgende stip die wordt gevonden. Zie het voorbeeld hierboven, waar geel de stukken zijn die omgedraaid worden. +reversi3=Je beurt kan worden overgeslagen als er geen legale zet is. Hierdoor kan je tegenstander doorgaan tot jij een legale zet kunt doen. +reversi4=De speler die aan het einde van het spel de meeste stukken op het bord heeft, wint. +tutorialstring=Tutorial arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (Arabisch) chinese=\u4e2d\u6587 (Chinees) diff --git a/app/src/main/resources/assets/localization/localization_ru.properties b/app/src/main/resources/assets/localization/localization_ru.properties index f5d457b..ac33ac0 100644 --- a/app/src/main/resources/assets/localization/localization_ru.properties +++ b/app/src/main/resources/assets/localization/localization_ru.properties @@ -5,6 +5,7 @@ are-you-sure=\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b? back=\u041d\u0430\u0437\u0430\u0434 cancel=\u041e\u0442\u043c\u0435\u043d\u0430 challenge=\u0412\u044b\u0437\u043e\u0432 +connect4=Connect 4 computer-difficulty=\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 computer-think-time=\u0412\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 computer=\u041a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 @@ -75,6 +76,13 @@ you-were-challenged-by=\u0412\u0430\u0441 \u0432\u044b\u0437\u0432\u0430\u043b \ you-win=\u0412\u044b \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442\u0435 >=> <=< +connect4.1=\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0438\u0433\u0440\u0443 Connect 4! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0445\u043e\u0434, \u043a\u043b\u0438\u043a\u043d\u0443\u044f \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432. \u0425\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d \u0432 \u043d\u0438\u0436\u0430\u0439 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0432 \u044d\u0442\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0435. +connect4.2=\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0438\u0433\u0440\u0430\u0442\u044c, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0432 4 \u0444\u0438\u0448\u043a\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0446\u0432\u0435\u0442\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e, \u0434\u0438\u0430\u0433\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0438\u043b\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e! +reversi1=\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u0438\u0433\u0440\u0443 Reversi! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0445\u043e\u0434, \u043a\u043b\u0438\u043a\u043d\u0443\u044f \u043f043 \u043f043 \u043d043 \u043e043 \u043d043 \u043e043 \u043a043 \u0430043 \u043a043 \u0430043. +reversi2=\u041d043 \u043d043 \u0430043 \u043a043 \u0430043 \u043a043 \u043e043 \u043c043 \u0435043 \u0436043 \u0435043 \u0434043 \u0435043 \u043d043 \u0430043. +reversi3=\u0412043 \u0430043 \u0436043 \u0434043 \u0430043 \u043d043 \u0438043 \u043d043 \u0435043 \u0435043 \u0432043 \u0430043. +reversi4=\u0418043 \u0433043 \u0440043 \u043e043 \u043a043 \u043e043 \u0442043 \u043e043 \u0442043 \u043e043 \u0435043 \u0435043 \u0430043 \u0435043 \u043d043 \u0438043 \u0435043 \u0435043 \u043c043 \u0430043. +tutorialstring=\u0423\u0447\u0435\u0431\u043d\u0438\u043a arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (\u0410\u0440\u0430\u0431\u0441\u043a\u0438\u0439) chinese=\u4e2d\u6587 (\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439) diff --git a/app/src/main/resources/assets/localization/localization_zh.properties b/app/src/main/resources/assets/localization/localization_zh.properties index a14aa4b..8f20733 100644 --- a/app/src/main/resources/assets/localization/localization_zh.properties +++ b/app/src/main/resources/assets/localization/localization_zh.properties @@ -9,6 +9,7 @@ computer-difficulty=\u8ba1\u7b97\u673a\u96be\u5ea6 computer-think-time=\u8ba1\u7b97\u673a\u601d\u8003\u65f6\u95f4 computer=\u8ba1\u7b97\u673a connect=\u8fde\u63a5 +connect4=Connect 4 credits=\u81f4\u8c22 dark=\u6697\u8272 deny=\u62d2\u7edd @@ -75,6 +76,13 @@ you-were-challenged-by=\u60a8\u88ab\u6311\u6218\u81ea you-win=\u60a8\u83b7\u80dc\u4e86 >=> <=< +connect4.1=\u6b22\u8fce\u6765\u5230 Connect 4 \u6e38\u620f! \u4f60\u53ef\u4ee5\u70b9\u51fb\u4e00\u5217\u6761\u76ee\u64cd\u4f5c. \u64cd\u4f5c\u5c06\u88c5\u7f6e\u5728\u672a\u88c5\u5165\u7684\u6700\u4f4e\u884c. +connect4.2=\u5982\u679c\u5f97\u52304\u4e2a\u5bf9\u5e94\u7684\u4ee3\u7406\u7ec4\u6210\u6c34\u5e73\u3001\u5347\u5e26\u6216\u5782\u76f4\u5373\u53ef\u80dc. \u770b\u4e0a\u65b9\u793a\u4f8b. +reversi1=\u6b22\u8fce\u6765\u5230 Reversi \u6e38\u620f! \u4f60\u53ef\u4ee5\u70b9\u51fb\u4e00\u4e2a\u9ed8\u8272\u5149\u900f\u7a7a\u70b9\u64cd\u4f5c. +reversi2=\u70b9\u51fb\u4e00\u4e2a\u70b9\u65f6\u5c06\u5c06\u6240\u6709\u4e2d\u95f4\u7684\u4ee3\u7406\u7ffb\u8f6c\u3002 \u770b\u4e0a\u65b9\u793a\u4f8b\uff0c\u9ec4\u8272\u662f\u5bf9\u4ee3\u7406\u9700\u64ad\u7684\u4ee3\u7406. +reversi3=\u5982\u679c\u6ca1\u6709\u5408\u6cd5\u64cd\u4f5c\u4f60\u7684\u8fdb\u6b65\u53ef\u80fd\u88ab\u5ffd\u7565. \u8fd9\u4f1a\u8ba9\u5bf9\u624b\u518d\u6b21\u64cd\u4f5c\u5230\u4f60\u6709\u5408\u6cd5\u64cd\u4f5c\u65f6. +reversi4=\u672c\u6e38\u620f\u7ed3\u675f\u65f6\u8d62\u5f97\u6ee1\u8fc7\u76d8\u9762\u7684\u4ee3\u7406\u6570\u6700\u591a\u7684\u4eba\u5c31\u80dc. +tutorialstring=\u6559\u7a0b arabic=\u0627\u0644\u0639\u0631\u0628\u064a\u0629 (\u963f\u62c9\u4f2f\u8bed) chinese=\u4e2d\u6587