Генерування випадкових чисел
«Генерація випадкових чисел занадто важлива, щоб залишати її на волю випадку»
Роберт Кав'ю
Python породжує випадкові числа на основі формули, так що вони не насправді випадкові, а, як кажуть, псевдовипадкові.Модуль random дозволяє генерувати випадкові числа. Перш ніж використовувати модуль, необхідно підключити його за допомогою інструкції: import random
Приклад програми, що відображає рух об'єкта з оминанням випадково розташованих перешкод.
from tkinter import * #під"єднання бібліотеки графічних складових import time #під'єднання таймера import random #під'єднання генератора випадкових чисел master = Tk() #створення екземпляру класу Tk #задамо всі параметри ігрового поля window_width =1200 widow_height = 600 ball_radius = 25 ball_left = 40 ''' використовуючи клас Canvas бібліотеки tkinter, створимо поле для розташування зображень об'єкта й перешкод і розташуємо його у вікні програми, використовуючи метод pack: ''' w = Canvas(master, width=window_width, height=widow_height, bg="orange") w.pack() #Створимо об'єкт ball_x1 = ball_left ball_y1 = widow_height/2 - ball_radius ball_x2 = ball_left + 2 * ball_radius ball_y2 = widow_height/2 + ball_radius ball = w.create_oval(ball_x1, ball_y1, ball_x2, ball_y2, fill="red") #Розташуємо перешкоди w.create_line(100, 60, 100, 230,width=4,fill="red") w.create_line(100, 350, 100, 520, width=4,fill="black") w.create_line(300, random.randrange(130, 140), random.randrange(200,350), random.randrange(350, 450), width=4,fill="#f36e36") w.create_line(500, 80, 600, 230, width=4,fill="#03c017") w.create_line(500, 300, 500, 520,width=5,fill="yellow") w.create_line(800, random.randrange(100, 150), random.randrange(600,950), random.randrange(350, 450), width=4,fill="#00a1ff") w.create_line(1100, 60, 1000, 230,width=4,fill="blue") w.create_line(1000, 350, 1100, 520, width=4, fill="#944893") #Задамо рух об'єкта за таким алгоритмом #описати функцію виявлення перешкоди у напрямку (0; dir): def check_collision(circle, dir): (x1, y1, x2, y2) = w.coords(ball) result = w.find_overlapping(x1, y1 + dir, x2, y2 + dir) return len(result) > 1 #описати функцію руху об'єкта: def animation(): while (True): (x1, y1, x2, y2) = w.coords(ball) if (x1 > window_width - 2 * ball_radius): break y_move = 0 x_move = 1 # перевірка наявності перешкоди "прямо за курсом" if (check_collision(ball, 0)): if (check_collision(ball, -15)):# перевірка наявності перешкоди ліворуч y_move = 1 # приріст ординати руху праворуч x_move = 0 # приріст абсциси руху праворуч if (check_collision(ball, 15)): # перевірка наявності перешкоди праворуч y_move = -1 x_move = 0 w.move(ball, x_move, y_move)# пересування об'єкта w.update() time.sleep(0.002) # затримка у часі #виклик функції animation і методу запуску програми на виконання: w.after(0, animation) mainloop()
Джерело
Немає коментарів:
Дописати коментар
Примітка: лише член цього блогу може опублікувати коментар.