Академический Документы
Профессиональный Документы
Культура Документы
«Пятнашки»
Модуль random
Модуль random необходим для генерации псевдослу-
чайных чисел. Чтобы начать работу с данным модулем,
прежде необходимо его импортировать.
import random
или
from random import *
Посмотрим, как работает базовая функция random().
Данная функция генерирует число в промежутке [0.0,
1.0).
random()
Однако это не всегда удобно. Генерировать чис-
ла можно в заданном диапазоне от a до b. Функция
uniform() возвращает псевдослучайное вещественное
число float в заданном диапазоне, а randint() – целое
int. В дальнейшем это понадобится нам для генериро-
вания последовательности псевдослучайных чисел в
игре «Пятнашки».
uniform(a,b)#псевдослучайное вещественное число
Случайные цвета
Рассмотрим, как с помощью функции random мож-
но сгенерировать случайные цвета. Чтобы задать цвет,
достаточно указать три составляющие: red, green, blue,
каждая из которых может принимать значение от 0 до
255. Например, черный цвет rgb(0,0,0) или #000000, бе-
лый цвет rgb(255,255,255) или #111111.
r = int(random() * 256)
g = int(random() * 256)
b = int(random() * 256)
Таким образом, 3 числа будут сгенерированы, а их
комбинация образует случайный цвет. Следующая за-
дача, которую необходимо решить – перевести получен-
ное значение из десятичной в шестнадцатеричную си-
стему. Воспользуемся идентификатором %02х.
rgb = "#%02x%02x%02x" % (r,g,b)
4
«Пятнашки»
5
Урок № 5-6
5. 7 % 2 = 3
7 // 2 = 1
6. 3 % 2 = 1
3 // 2 = 1 #первый элемент последовательности
Записываем в таблицу полученные значения.
Продвигаемся с конца: 15 dec == 1110011 bin. Вместо не-
достающего восьмого значения ставим 0 в начало.
Работа с клавиатурой
Игра «Пятнашки» предполагает обработку нажа-
тия клавиш (вверх/вниз/влево/вправо). Пользователь
нажал клавишу <Key>. В результате обработки события
ключ предоставляется в формате char.
6
«Пятнашки»
Приложение 1. «Пятнашки»
def isEnd():
global field
for i in range(15):
if field[i]["text"]!=str(i+1):
return
messagebox.showinfo("Congratulations", "You won")
exit(0)
7
Урок № 5-6
def findEmptyCell():
global field
for i in range(16):
if field[i]["text"]=="":
return i
def keyPress(e):
pos = findEmptyCell()
if e.keycode==8320768:#Up ==38
if pos<12:
field[pos]["text"],field[pos+4]["text"]=field[pos+4]
["text"],field[pos]["text"]
if e.keycode == 8124162:#Left ==37
if (pos + 1) % 4 != 0:
field[pos]["text"], field[pos + 1]["text"] =
field[pos + 1]["text"], field[pos]["text"]
8
«Пятнашки»
def setField():
n = 0
for i in range(4):
for j in range(4):
field.append(
Label(form, width=6, height=3,
font="Arial 20 bold",
borderwidth=1,relief="solid"))
field[n].grid(row=i, column=j)
n += 1
k = 1
while k < 16:
a = randint(0, 15)
if (field[a]["text"] == ""):
field[a]["text"] = str(k)
k += 1
form = Tk()
form.title("Game")
form.resizable(False,False)
field = []
setField()
form.bind("<Key>",keyPress)
form.mainloop()
9
Урок № 5-6
number = "123456789"
new_string = "qwertyuiopasdfghjklzxcvbnm"
up_string = new_string.upper()
passw = number+new_string+up_string
List = list(passw)
shuffle(List)
print(user_passw)
10
Урок № 5-6
«Пятнашки»