Проблемы с созданием классов в многоуровневой игре лабиринт в Pygame - PullRequest
0 голосов
/ 16 мая 2019

Ниже приведен вывод кода, который будет формировать игру-лабиринт, которую я пытаюсь создать, это можно назвать начальной комнатой, в которую упал игрок:

  • Красный прямоугольник формирует моего персонажа, я закодировал его, чтобы перемещаться по комнате
  • Бирюзовые прямоугольники, которые находятся за пределами синего прямоугольника, образуют проходы: Север, Восток, Юг, Запад
  • Темно-синий прямоугольник образует границу, где красный прямоугольник не может пересекаться.
  • Код должен позволять красному прямоугольнику перемещаться в другую комнату (мы назовем эту комнату 2), когда он приближается коткрытый проход, вторая комната должна быть идентична первой (т.е. с 4 проходами)
  • Игра заканчивается, когда в одной из комнат есть что-то, называемое выигрышным проходом, поэтому в приведенном выше примереесли северный проход был известен как выигрышный проход, и мой красный прямоугольник приблизился к нему, игра закончилась бы
  • Если он приблизится к закрытому проходуЭто должно вывести что-то вроде «Вы не можете туда пойти».

Проблема, с которой я сталкиваюсь, заключается в том, чтобы заставить код читать информацию из текстового файла, который бы указывал, сколько комнат, каку многих из этих комнат есть открытые проходы, у скольких из них есть закрытые проходы, и у какой комнаты есть выигрышный проход.Как только код узнает, что, например, существует 4 комнаты, он создаст 4 экземпляра вышеуказанного изображения, а затем покажет пользователю случайную комнату, после чего пользователю придется перемещаться по разным комнатам, используя открытые проходы, пока он не найдет выигрышный проход.,

Я вставил код ниже, любая помощь будет принята с благодарностью, или если у вас есть какие-либо комментарии, не стесняйтесь спрашивать:

import pygame
import random

pygame.init() 

win = pygame.display.set_mode((700,700)) 

pygame.display.set_caption("Maze Game")



def draw_rect_outline(surface, rect, color, width=1):
    x, y, w, h = rect
    width = max(width, 1)

def text_objects(text, font):
    textSurface = font.render(text, True, (0,0,0))
    return textSurface, textSurface.get_rect()

class player(object):
    def __init__(self, x, y, width, height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.vel = 20

    def draw(self,win):
        pygame.draw.rect(win, (255, 0, 0), (self.x, self.y, self.width, self.height)) #Drawing the Character#

def redrawgamewindow():
    win.fill((0,0,0))
    user.draw(win)

    pygame.draw.rect(win, (0, 100, 255, 155), (80, 80, 550, 550), 10) # Blue Rectangle#
    #Would all of these passageways go into one class or multiple classes?#
    pygame.draw.rect(win, (64,224,208), (350, 30, 40, 40)) # North Passage#
    pygame.draw.rect(win, (64,224,208), (350, 643, 40, 40)) # South Passage#
    pygame.draw.rect(win, (64,224,208), (643, 350, 40, 40)) # East Passage
    pygame.draw.rect(win, (64,224,208), (30, 350, 40, 40)) # West Passage#
    pygame.display.update()


#Maybe I should move the below code into a function#

user = player(100, 100, 40, 60)

run = True           
while run:
    pygame.time.delay(100)   

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed() # Moving the player around the room #

    if keys [pygame.K_LEFT]:
        user.x -= user.vel
    if keys [pygame.K_RIGHT]:
        user.x += user.vel
    if keys [pygame.K_UP]:
        user.y -= user.vel
    if keys [pygame.K_DOWN]:
        user.y += user.vel

    redrawgamewindow()

pygame.quit()
...