-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.py
116 lines (102 loc) · 8.33 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
''' Terminal Arcade: single player games for terminal '''
# Copyright 2023 Peter Jenei
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import Games.Assets.terminalColors as TC
from Games import minefield, yahtzee, tictactoe, rockPaperScissors
DESIGN = {
'Logo': [
'#F ┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬ #E',
'#F ┬─┴─┬─┴───┴───┴───┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬─┴─┬ #E',
'#F┬─┴─┬─┘ #E#G─┬─ ┌── ┌─┐ ┌┐┌┐ | ┌─┐ | #E#F┌─┴─┬─┴─┬─┴─┬─┴ #E',
'#F┴─┬─┴─┐ #E#G │ ├─ ├─┘ │└┘│ │ │\ │ ├─┤ │ #E#F└─┬─┴─┬─┴─┬─┴─┬ #E',
'#F┬─┴─┬─┴─┐#E#G │ └── │ \ │ │ │ │ \│ │ │ └──#E#F └─┬─┴─┬─┴─┬─┴ #E',
'#F┴─┬─┴─┬─┴─┬───┬───┬───┬───┬───┬───┬───┬───┬─┴─┬─┴─┬─┴ #E',
'#F ┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┴───┴───┴───┴───┴─┬─┴─┬ #E',
'#F ┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐#E#G ┌─┐ ┌─┐ ┌── ┌─┐ ┌─ ┌──#E#F └─┬─┴─┬ #E',
'#F┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘#E#G ├─┤ ├─┘ │ ├─┤ │ │ ├─ #E#F ┌─┴─┬─┴ #E',
'#F┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐#E#G │ │ │ \ └── │ │ └─ └──#E#F └─┬─┴─┬ #E',
'#F┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┬───┬───┬───┬───┬───┬─┴─┬─┴─┬ #E',
'#F└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬#E',
'#F ┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴#E'
],
'Logo-extended': [
' ┌─────────────┐ ',
' # ┬┬ ┌┴─────────────┴┐ ',
' ┬┬ ┌──┴──┴┴─┐ │ ┌┐ ┌┐ ┌┐ ┌┐ │ # ',
' ┴┴──┴──┐ ┌─┐ │ # │ └┘ └┘ └┘ └┘ │┌────┐ ┬┬ # ┌──┴──┐ ',
' ┌┐ ┌┐ │ └─┘┌┴───┴─┴──┬┐ ┌┐ ┌┐ ┌┐ ││ # ┌┴─┴┴─┴─┴─┐ │ ',
' └┘ └┘ │ ┌─┐│ ┌─┐ ┌─┐ ├┘ └┘ └┘ ├┴──┴┴─┴─┴┐┌─┐ ┌─┐ │ │ ',
' ┌┐ ┌┐ ┼┬└─┘│ └─┘ └─┘ ├┐ ┌┐ ┌┐ │ ┌┬──────┴┴─┴─┴─┤ │ │ ',
' └┘┌┴┴─┴┴───┴──┬┐ ┌─┐ ├┘ └┘ └┘ │ ││ ┌─┐ ┌─┐ ┌─┐ │ │ ┌┴──── ',
' ┌┐│ ┌──┐ ┌──┐ ├┘ └─┘ ├┐ ┌┐ ┌┐ │ └┤ └─┘ └─┘ └─┘ │ │ │ ┌─┐ ',
' └┘│ └──┘ └──┘ ├┐ ┌─┐ ├┘ └┘ └┘ │ ┌┤ ┌─┐ ┌─┐ ┌─┐ │ │ │ └─┘ ',
' │ ┌──┐ ┌──┐ ├┘ └─┘ ├┐ ┌┐ ┌┐ │ ││ └─┘ └─┘ └─┘ │ │ │ ┌─┐ ',
' │ └──┘ └──┘ │ ├┘ └┘ └┘ │ └┤ ┌─┐ ┌─┐ ┌─┐ │ │ │ └─┘ ',
'#F┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬#E',
'#F┴─┬─┴─┬─┴───┴───┴───┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴#E',
'#F┬─┴─┬─┘ #E#G─┬─ ┌── ┌─┐ ┌┐┌┐ | ┌─┐ | #E#F┌─┴─┬─┴─┬─┴─┬─┴─┬─┴ #E',
'#F┴─┬─┴─┐ #E#G │ ├─ ├─┘ │└┘│ │ │\ │ ├─┤ │ #E#F└─┬─┴─┬─┴─┬─┴─┬─┴ #E',
'#F┬─┴─┬─┴─┐#E#G │ └── │ \ │ │ │ │ \│ │ │ └──#E#F └─┬─┴─┬─┴─┬─┴─┬ #E',
'#F┴─┬─┴─┬─┴─┬───┬───┬───┬───┬───┬───┬───┬───┬─┴─┬─┴─┬─┴─┬─┴ #E',
'#F ┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬ #E',
'#F ┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐ #E#G┌─┐ ┌─┐ ┌── ┌─┐ ┌─ ┌──#E#F └─┬─┴─┬─┴ #E',
'#F┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ #E#G├─┤ ├─┘ │ ├─┤ │ │ ├─ #E#F ┌─┴─┬─┴ #E',
'#F┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐ #E#G│ │ │ \ └── │ │ └─ └──#E#F └─┬─┴─┬ #E',
'#F┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬───┬───┬───┬───┬───┬───┬─┴─┬─┴─┬ #E',
'#F└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬ #E',
'#F ┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴ #E',
],
'GameList': [
f'#B1#E - Minesweeper',
f'#B2#E - Yahtzee',
f'#B3#E - Tic Tac Toe',
f'#B4#E - Rock Paper Scissors',
f'#BQ#E - Quit to terminal'
]
}
def print_main_screen(message=''):
'''
Display and handle main screen for Terminal Arcade
'''
os.system('clear')
for row in range(0, len(DESIGN['Logo-extended'])):
logo_row=DESIGN['Logo-extended'][row]
logo_row=TC.colorize(logo_row)
print(logo_row)
print('')
for i in DESIGN['GameList']:
print(''.center(21, ' '), end='')
print(TC.colorize(i))
print(f'\n{message}')
message=''
command=input("Which game would you like to play?")
if command == '1':
game=minefield.Minesweeper()
# game.admin_mode=True
game.new_game()
elif command == '2':
game = yahtzee.Yahtzee()
game.new_game()
elif command == '3':
game = tictactoe.TicTacToe()
game.new_game()
elif command == '4':
game = rockPaperScissors.RockPaperScissors()
game.new_game()
elif command.lower() == 'q':
return
else:
message=TC.colorize('#FThere is no such parameter#E')
print_main_screen(message)
if __name__ == "__main__":
print_main_screen()
print(TC.colorize('#GThank you for playing! Have a nice day!#E'))