Вопрос задан 19.11.2023 в 20:43. Предмет Информатика. Спрашивает Косенкова Анастасия.

Напишіть код гри пак ман на пайтон якщо не здам поставлять 2 за семестр даю 800 балов

0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Дауылбекулы Даулет.

Первое, что нам нужно, это начальная структура, окошко, у меня оно будет выглядеть так:

from tkinter import *

import random as rdm

class Main(Frame):

   def __init__(self, root):

       super(Main, self).__init__(root)

       self.startUI()

   def startUI(self):

       pass

if __name__ == '__main__':

   root = Tk()

   root.geometry("500x500+200+200")

   root.title("Камень, ножницы, бумага")

   root.resizable(False, False)

   root["bg"] = "#FFF"

   app = Main(root)

   app.pack()

   root.mainloop()

Здесь мы создаём неизменяемое окно 500 на 500 с заголовком «Камень, ножницы, бумага» и белым фоном. Именно в это окошко мы будем добавлять кнопочки, счетчики и т.д.

Теперь в наш метод startUI добавим такие строчки:

btn = Button(root, text="Камень", font=("Times New Roman", 15))

btn = Button(root, text="Ножницы", font=("Times New Roman", 15))

btn3 = Button(root, text="Бумага", font=("Times New Roman", 15))

btn.place(x=10, y=100, width=120, height=50)

btn2.place(x=155, y=100, width=120, height=50)

btn3.place(x=300, y=100, width=120, height=50)

Эти 7 строчек добавят в наше окно 3 кнопки которые нечего не делают. Мы исправим это позже.

Пользователь делает свой выбор, нажимая на одну из 3 кнопок, это круто, но нам нужен оппонент, именно для этого нужен модуль random.

А вот теперь мы добавим функцию, которая будет обрабатывать выбор, и выдавать ответ, кто же выиграл в этом раунде. Сделаем это вот таким образом:

btn = Button(root, text="Камень", font=("Times New Roman", 15),

   command=lambda x=1: self.btn_click(x))

btn2 = Button(root, text="Ножницы", font=("Times New Roman", 15),

   command=lambda x=2: self.btn_click(x))

btn3 = Button(root, text="Бумага", font=("Times New Roman", 15),

   command=lambda x=3: self.btn_click(x))

Что тут происходит?

Всё очень просто. Грубо говоря, если игрок нажмет камень, отправится 1, если ножницы, то 2, а если бумага, то 3, причем не только отправится, но и выведется в консоль.

На счет компьютера. Он свой выбор делает, но его выбор никуда не идёт.

Перед тем, как делать логику, нам нужно передать игроку результат, и для этого мы будем использовать Label. Добавим в startUI такие строчки:

self.lbl = Label(root, text="Начало игры!", bg="#FFF",

   font=("Times New Roman", 21, "bold"))

self.lbl.place(x=120, y=25)

self.lbl2 = Label(root, justify="left",

   font=("Times New Roman", 13),

   text=f"Побед: {self.win}\nПроигрышей:"

   f" {self.lose}\nНичей: {self.drow}",

   bg="#FFF")

self.lbl2.place(x=5, y=5)

Отлично. Теперь у нас есть надпись, в которую мы будем выводить результат раунда и надпись со статистикой.

Сделаем 3 счетчика:

 1. Поражений

 2. Побед

 3. Ничей

Для этого все в тот же startUI добавим такую строку:

self.win = self.drow = self.lose = 0

Теперь в классе main создаем метод btn_click, и пишем в него следующие строки:

def btn_click(self, choise):

   comp_choise = rdm.randint(1, 3)

   print(choise)

Недолго музыка играла. Там же, в btn_click, удаляем

print(choise)

и пишем вот эти строки:

if choise == comp_choise:

   self.drow += 1

   self.lbl.configure(text="Ничья")

elif choise == 1 and comp_choise == 2 \

   or choise == 2 and comp_choise == 3 \

   or choise == 3 and comp_choise == 1:

   self.win += 1

   self.lbl.configure(text="Победа")

else:

   self.lose += 1

   self.lbl.configure(text="Проигрыш")

self.lbl2.configure(text=f"Побед: {self.win}\nПроигрышей:"

   f" {self.lose}\nНичей: {self.drow}")

del comp_choise

Собственно всё, на этом создание закончилось. Всё работает, можно играть.

Полный код:

from tkinter import *

import random as rdm

class Main(Frame):

   def __init__(self, root):

       super(Main, self).__init__(root)

       self.startUI()

   def startUI(self):

       btn = Button(root, text="Камень", font=("Times New Roman", 15),

                    command=lambda x=1: self.btn_click(x))

       btn2 = Button(root, text="Ножницы", font=("Times New Roman", 15),

                     command=lambda x=2: self.btn_click(x))

       btn3 = Button(root, text="Бумага", font=("Times New Roman", 15),

                     command=lambda x=3: self.btn_click(x))

       btn.place(x=10, y=100, width=120, height=50)

       btn2.place(x=155, y=100, width=120, height=50)

       btn3.place(x=300, y=100, width=120, height=50)

       self.lbl = Label(root, text="Начало игры!", bg="#FFF", font=("Times New Roman", 21, "bold"))

       self.lbl.place(x=150, y=25)

       self.win = self.drow = self.lose = 0

       self.lbl2 = Label(root, justify="left", font=("Times New Roman", 13),

                        text=f"Побед: {self.win}\nПроигрышей:"

                             f" {self.lose}\nНичей: {self.drow}",

                        bg="#FFF")

       self.lbl2.place(x=5, y=5)

   def btn_click(self, choise):

       comp_choise = rdm.randint(1, 3)

       if choise == comp_choise:

           self.drow += 1

           self.lbl.configure(text="Ничья")

       elif choise == 1 and comp_choise == 2 \

               or choise == 2 and comp_choise == 3 \

               or choise == 3 and comp_choise == 1:

           self.win += 1

           self.lbl.configure(text="Победа")

       else:

           self.lose += 1

           self.lbl.configure(text="Проигрыш")

       self.lbl2.configure(text=f"Побед: {self.win}\nПроигрышей:"

                             f" {self.lose}\nНичей: {self.drow}")

       del comp_choise

if __name__ == '__main__':

   root = Tk()

   root.geometry("430x160+200+200")

   root.title("Камень, ножницы, бумага")

   root.resizable(False, False)

   root["bg"] = "#FFF"

   app = Main(root)

   app.pack()

   root.mainloop()

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Код гры "Пак-Ман" на Python может быть достаточно сложным и требует некоторого объема программирования. Однако, я могу привести вам общую структуру кода, которая поможет вам начать разработку игры.

Вот пример базового кода для игры "Пак-Ман" на Python:

```python import pygame from pygame.locals import *

# Инициализация игры pygame.init()

# Определение размера экрана screen_width = 800 screen_height = 600 screen = pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("Пак-Ман")

# Определение цветов BLACK = (0, 0, 0) WHITE = (255, 255, 255)

# Определение размеров и положения Пак-Мана pacman_radius = 15 pacman_x = screen_width / 2 pacman_y = screen_height / 2

# Определение функции для отрисовки Пак-Мана def draw_pacman(): pygame.draw.circle(screen, YELLOW, (pacman_x, pacman_y), pacman_radius)

# Основной игровой цикл running = True while running: # Обработка событий for event in pygame.event.get(): if event.type == QUIT: running = False

# Обновление игрового состояния

# Отрисовка игрового состояния screen.fill(BLACK) draw_pacman() pygame.display.flip()

# Завершение игры pygame.quit() ```

Это только начало кода для игры "Пак-Ман". Вы можете продолжить его разработку, добавив логику движения Пак-Мана, привидений и других элементов игры, а также обработку столкновений, съедание точек и т. д.

Помните, что этот код является только основой и требует дальнейшей разработки и настройки, чтобы создать полноценную игру "Пак-Ман". Также учтите, что код может зависеть от используемой версии библиотеки Pygame.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос