Browse Source

main game

Gérald LEBAN 3 years ago
parent
commit
7a10317630
1 changed files with 79 additions and 0 deletions
  1. 79
    0
      marinbad/game_numy.py

+ 79
- 0
marinbad/game_numy.py View File

@@ -0,0 +1,79 @@
1
+from AI import AI
2
+from Board import Board
3
+from os import system
4
+from random import shuffle
5
+
6
+
7
+def play(board: list, **kwargs):
8
+    def strArray(array):
9
+        """
10
+        Convert an array to a string array and add one to every value
11
+        Used to stringigy range() and start value from 1
12
+        :param array:
13
+        :return:
14
+        """
15
+        return [str(el + 1) for el in array]
16
+
17
+    def intable(value):
18
+        """
19
+        Return True if value can be cast to integer
20
+        :param value: The value to convert in integer
21
+        :type value str
22
+        :return: bool
23
+        """
24
+        try:
25
+            int(value)
26
+            return True
27
+        except ValueError:
28
+            return False
29
+
30
+    # Filter row input
31
+    row = "string"
32
+    strRange = strArray(range(len(board)))
33
+    while not(intable(row)) or not(row in strRange):
34
+        row = input(f"Choisissez une rangée entre 1 et {len(board)}: ")
35
+    row = int(row)
36
+
37
+    # Filter remove allumettes
38
+    remove = "0"
39
+    while not(intable(remove)) or not("1" <= remove <= str(board[row - 1])):
40
+        remove = input(f"Choisissez le nombre d'allumettes à retirer entre 1 et {board[row - 1]}: ")
41
+    remove = int(remove)
42
+
43
+    print(f"{kwargs['name']}: L{row} => {remove}")
44
+    # Return board after player move
45
+    return game_board.retirer(board, row, remove)
46
+
47
+
48
+game_board = Board()
49
+
50
+players = [
51
+    {
52
+        "name": "Jean Yves",
53
+        "func": play
54
+    },
55
+    {
56
+        "name": "Gérald",
57
+        "func": AI().compute
58
+    }
59
+]
60
+
61
+# Choisi le 1er joueur
62
+shuffle(players)
63
+
64
+# Creation du plateau de jeu
65
+print("Entrez une liste sous cette forme: X Y Z A B C")
66
+allumettes = [int(el) for el in input(">>> ").split(" ")]
67
+
68
+print(f"Voici l'ordre des joueurs: {' => '.join([player['name'] for player in players])}")
69
+
70
+while True:
71
+    for player in players:
72
+        game_board.show_board(allumettes)
73
+
74
+        allumettes = player["func"](allumettes, name=player["name"])
75
+
76
+        if game_board.nb_allumettes(allumettes) == 0:
77
+            print(f"Le {player['name']} à gagné !!")
78
+            exit(0)
79
+        print("")

Loading…
Cancel
Save