Я пытаюсь создать простую игру. Я хочу случайным образом создать «бомбы», и игроку нужно щелкнуть его, прежде чем он взорвется. Прямо сейчас я действительно изо всех сил стараюсь сделать так, чтобы моя программа могла зарегистрировать координаты кликов и определить, нажали ли вы на бомбу или пропустили. У кого-нибудь есть указатели/подсказки для продвижения вперед?Как я могу обнаружить объект, если он был нажат?
Вот что у меня есть.
Моя бомба Класс:
from graphics import *
import time
class Bomb(object):
def __init__(self, location, radius, window):
self.circle = Circle(location, radius)
self.circle.draw(window)
self.circle.setFill("black")
self.start_time = time.time()
def update(self):
if time.time() - self.start_time > 3.0:
self.circle.setFill("blue")
def ready_to_explode(self):
if time.time() - self.start_time > 3.0:
return True
def is_clicked(self):
#use x y coordinates of click and determine if the distance between this point and center of circle is <or> than radius?
def explode(self):
self.circle.setFill("pink")
def defuse(self):
self.circle.setFill("green")
Моя основная программа:
from graphics import *
import time
import random
from bomb import Bomb
window = GraphWin("Click-click-BOOM! *", 400, 400)
event_text = Text(Point(100, 100), "events")
event_text.draw(window)
time_text = Text(Point(100, 200), "time info")
time_text.draw(window)
def keyboard_callback(event):
event_text.setText(event.char)
if "q" == event.char:
global quit
quit = True
def click_callback(event):
click_output = "button1 click at "
click_output += "<" + str(event.x) + ", " + str(event.y) + ">"
event_text.setText(click_output)
window.bind_all("<Key>", keyboard_callback)
window.bind_all("<Button-1>", click_callback)
start_time = time.time()
last_time = start_time
quit = False
bombs = []
bomb_to_add = Bomb(Point(random.randint(1, 400), random.randint(1, 400)), 25, window)
bombs.append(bomb_to_add)
frames = 0
while not quit:
for bomb in bombs:
bomb.update()
if bomb.is_clicked():
bomb.defuse()
window.close()
exit()
Что это за 'графический' импорт? – KSFT
@KSFT: Когда это выглядит как домашнее задание, и его просто называют «графикой» без каких-либо уточнений, обычно это [вещь Джона Зелля] (http://mcsp.wartburg.edu/zelle/python/graphics/graphics/index.html), который завершает TkInter с помощью некоторых простых примитивов рисования фигуры. (И спрашивающий никогда не знает, откуда он, потому что их учитель обычно отдавал их им, не сообщая им ...) – abarnert
@KSFT Это простая объектно-ориентированная графическая библиотека. Здесь я получил свой круг, а также GraphWn. Должен ли я опубликовать его также? – Courtney