Top.Mail.Ru
Ответы
Аватар пользователя
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите пожалуйста, программирование.

  • Создать игру «Собери монеты». Правила игры: на экране случайно через некоторые промежутки времени появляются монеты разным достоинством (например, 1 рубль, 2 рубля, 3 рубля). Через некоторые случайные промежутки времени эти монеты исчезают с экрана. Пользователь собирает монеты с помощью клика мышью по монете. От монеты достоинством в 1 рубль пользователь получает 1 балл. От монеты достоинством в 2 рубля пользователь получает 2 балла. От монеты достоинством в 3 рубля пользователь получает 3 балла. Количество баллов пользователя должно отображаться на экране. Написать игру, используя любой модуль (tkinter, play, pygame) для создания графических пользовательских интерфейсов на python. Решение задачи должно быть написано с подробными комментариями!

  • Должны быть описаны: модуль для создания GUI; Спрайты; графические примитивы; виджеты Функции; классы; методы

  • Напишите пример работы программы с графическим пользовательским интерфейсом

По дате
По рейтингу
Аватар пользователя
Мастер
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
 import pygame 
import random 
 
pygame.init() 
 
WIDTH = 800 
HEIGHT = 600 
 
WHITE = (255, 255, 255) 
BLACK = (0, 0, 0) 
 
screen = pygame.display.set_mode((WIDTH, HEIGHT)) 
pygame.display.set_caption("Собери монеты") 
 
coin_images = { 
    1: pygame.image.load("coin1.png"), 
    2: pygame.image.load("coin2.png"), 
    3: pygame.image.load("coin3.png") 
} 
 
class Coin(pygame.sprite.Sprite): 
    def __init__(self, value, x, y): 
        pygame.sprite.Sprite.__init__(self) 
        self.value = value 
        self.image = coin_images[value] 
        self.rect = self.image.get_rect() 
        self.rect.center = (x, y) 
 
    def update(self): 
        self.rect.y += 5 
 
all_coins = pygame.sprite.Group() 
 
score = 0 
 
font = pygame.font.Font(None, 36) 
 
def show_score(): 
    text = font.render("Счет: " + str(score), True, BLACK) 
    screen.blit(text, (10, 10)) 
 
running = True 
clock = pygame.time.Clock() 
 
while running: 
    clock.tick(30) 
 
    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            running = False 
 
        if event.type == pygame.MOUSEBUTTONDOWN: 
            pos = pygame.mouse.get_pos() 
            clicked_coins = [c for c in all_coins if c.rect.collidepoint(pos)] 
            for coin in clicked_coins: 
                score += coin.value 
                coin.kill() 
 
    if random.randint(0, 100) < 3: 
        value = random.choice([1, 2, 3]) 
        x = random.randint(50, WIDTH - 50) 
        y = random.randint(-50, -10) 
        coin = Coin(value, x, y) 
        all_coins.add(coin) 
 
    all_coins.update() 
 
    screen.fill(WHITE) 
 
    all_coins.draw(screen) 
 
    show_score() 
 
    pygame.display.flip() 
 
pygame.quit() 
 
Аватар пользователя
Мастер

```python
import tkinter as tk
from tkinter import *
from random import randint
class CoinGame(tk.Frame):
def __init__(self, root):
super().__init__(root)
self.coin_list = []
self.score = 0
self.start_time = self.root.after(1000, self.coin_appear)
def coin_appear(self):
создаем спрайты монет
coin_1 = Coin(20, 50, '1.png')
coin_2 = Coin(150, 50, '2.png')
coin_3 = Coin(300, 50, '3.png')
добавляем монеты на экран
self.coins_list.append(coin_1)
self.add_coin(coin_2)
self.add_coin(coin_3)
self.root.update()
self.root.after(randint(1, 4), self.coin_disappear)
def add_coin(self, coin):
self.coin_list.append(coin)
coin.place(x=self.x, y=self.y)
метод, который добавляет монету на экран и увеличивает счетчик очков
def click(self, event):
if self.coin_list[0].collidepoint(event.x, event.y):
self.click _coin()
def click_coin(self):
coin = self.coin_list.pop(0)
score = coin.value
self.score += score
self.label.
Написано Яндекс Алисой