Amazing-Python-Scripts

Форк
0
163 строки · 7.5 Кб
1
# Importing required libraries
2
from tkinter import *
3
from tkinter import messagebox as mb
4
from tkinter import ttk
5
import random
6

7
# function to create screen for the game
8

9

10
def board():
11
    global value, w
12
    # initialising screen
13
    root = Tk()
14
    root.geometry("320x335")
15
    root.title("MineSweeper")
16
    root.resizable(False, False)
17
    root.eval('tk::PlaceWindow . center')
18
    # creating label
19
    w = Label(root, text="Start Playing!", bg='yellow', fg='red')
20
    # creating buttons
21
    but11 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
22
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but11, root))
23
    but12 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
24
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but12, root))
25
    but13 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
26
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but13, root))
27
    but14 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
28
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but14, root))
29
    but15 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
30
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but15, root))
31
    but21 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
32
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but21, root))
33
    but22 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
34
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but22, root))
35
    but23 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
36
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but23, root))
37
    but24 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
38
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but24, root))
39
    but25 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
40
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but25, root))
41
    but31 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
42
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but31, root))
43
    but32 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
44
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but32, root))
45
    but33 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
46
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but33, root))
47
    but34 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
48
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but34, root))
49
    but35 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
50
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but35, root))
51
    but41 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
52
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but41, root))
53
    but42 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
54
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but42, root))
55
    but43 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
56
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but43, root))
57
    but44 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
58
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but44, root))
59
    but45 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
60
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but45, root))
61
    but51 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
62
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but51, root))
63
    but52 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
64
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but52, root))
65
    but53 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
66
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but53, root))
67
    but54 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
68
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but54, root))
69
    but55 = Button(root, bg="grey", text="", padx=7.5, pady=5, bd=4,
70
                   font="digifacewide 18", height=1, width=2, command=lambda: game(but55, root))
71
    # adding buttons to the screen
72
    but11.grid(row=1, column=1)
73
    but12.grid(row=1, column=2)
74
    but13.grid(row=1, column=3)
75
    but14.grid(row=1, column=4)
76
    but15.grid(row=1, column=5)
77
    but21.grid(row=2, column=1)
78
    but22.grid(row=2, column=2)
79
    but23.grid(row=2, column=3)
80
    but24.grid(row=2, column=4)
81
    but25.grid(row=2, column=5)
82
    but31.grid(row=3, column=1)
83
    but32.grid(row=3, column=2)
84
    but33.grid(row=3, column=3)
85
    but34.grid(row=3, column=4)
86
    but35.grid(row=3, column=5)
87
    but41.grid(row=4, column=1)
88
    but42.grid(row=4, column=2)
89
    but43.grid(row=4, column=3)
90
    but44.grid(row=4, column=4)
91
    but45.grid(row=4, column=5)
92
    but51.grid(row=5, column=1)
93
    but52.grid(row=5, column=2)
94
    but53.grid(row=5, column=3)
95
    but54.grid(row=5, column=4)
96
    but55.grid(row=5, column=5)
97
    # adding label to the screen
98
    w.grid(row=0, column=0, columnspan=6)
99
    # creating values for each cell from 1-5 and "b" for bomb
100
    butlist = [but11, but12, but13, but14, but15, but21, but22, but23, but24, but25,
101
               but31, but32, but33, but34, but35, but41, but42, but43, but44, but45,
102
               but51, but52, but53, but54, but55]
103
    vallist = ['1', '2', '3', '4', '1', '2', '3', '4', '1', '2', '3', '4', '1', '2', '3', '4',
104
               '1', '2', '3', '4', 'b', 'b', 'b', 'b', 'b']
105
    value = {}
106
    random.shuffle(vallist)  # shuffle for randomness
107
    for i in range(25):
108
        value[butlist[i]] = vallist[i]  # assining values to buttons
109
    root.mainloop()
110

111

112
def game(b, tk):
113
    if value[b] == 'b':  # if bomb is clicked
114
        bomb_clicked(b, tk)
115
    else:  # if number is clicked
116
        number_clicked(b, int(value[b]), tk)
117

118

119
total = 0
120

121
# function when bomb is clicked
122

123

124
def bomb_clicked(b, tk):
125
    # making changes to cell
126
    b['text'] = "\U0001f600"
127
    b['relief'] = SUNKEN
128
    b['bg'] = "orange"
129
    global value, total
130
    # displaying message and asking for replay
131
    a = mb.askquestion("YOU LOSE", "       Your score : " +
132
                       str(total) + "\nDo you want to play again??")
133

134
    tk.destroy()  # exiting current board
135
    if a == 'yes':
136
        total = 0
137
        board()
138

139

140
def number_clicked(b, n, tk):
141
    global value, total
142
    if n != 0 and b['text'] == "":
143
        # making changes to cell and updating score
144
        b['text'] = n
145
        total += n
146
        value[b] = '0'
147
        w['text'] = "Your Score : " + str(total)
148
        if total >= 50:  # if player reached score of 50 he won
149
            b['text'] = "\U0001f600"
150
            b['relief'] = SUNKEN
151
            b['bg'] = "orange"
152
            # displaying message and asking for replay
153
            a = mb.askquestion("YOU WON", "       Your score : " +
154
                               str(total) + "\nDo you want to play again??")
155
            tk.destroy()  # exiting current board
156
            if a == 'yes':
157
                total = 0
158
                board()
159
            # showinfo("YOU WON", "YOUR SCORE : " + str(total))
160
            tk.destroy()
161

162

163
board()
164

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.