Вопрос задан 22.09.2023 в 22:13. Предмет Информатика. Спрашивает Матай Айшат.

Import pygame import randompygame.init()WIDTH = 800HEIGHT = 600back = (0, 0, 0) WHITE = (255,

255, 255)RED = (255, 0, 0)GREEN =(0, 255, 0)screen = pygame.display.set_mode((WIDTH,HEIGHT))pygame.display.set_caption("Патискаф направляется к Титанику!")class Monster():def __init__(self,name,x=0,y=0,width=10,height=10, color=None):self.name = nameself.rect = pygame.Rect(x, y, width,height)self.fill_color = backif color:self.fill_color = colordef color(self, new_color):self.fill_color = new_colordef fill(self): pygame.draw.rect(screen, self.fill_color, self.rect)def collidepoint(self, x,y):return self.rect.collidepoint(x, y)def colliderect(self, rect):return self.rect.colliderect(rect)class Player():def __init__(self, name, x=0, y=0, width=10,height=10, color=None):self.name = name self.rect = pygame.Rect(x, y, width, height)self.fill_color = back if color:self.fill_color=colordef color(self, new_color):self.fill_color = new_colordef fill(self):pygame.draw.rect(screen, self.fill_color,self.rect)def collidepoint(self, x,y):return self.rect.collidepoint(x,y)def colliderect(self, rect):return self.rect.colliderect(rect)player_size = 50player_x=WIDTH/2-player_size/2player_y = HEIGHT-player_size player_speed=5monster_size=50 monster_x=random.randint(0,WIDTH-monster_size) monster_y=-monster_size monster_speed=2score=0clock = pygame.time.Clock()game_over = Falsefont = pygame.font.Font(None, 36) def show_score(x, y):score_text=font.render("Score: [score}", True, WHITE) screen.blit(score_text, (x, y))def collision(player_x, player_y, monster_x, monster_y):distance = ((player_x - monster_x)**2+ (player_y - monster_y)**2)**0.5if distance < player_size/2+monster_size/2:return Truereturn Falseplayer = Player ("Potiskaaf",player_x,player_y, player_size, player_size, WHITE) monster1 = Monster("Monster", monster_x, monster_y, monster_size, monster_size, RED) monster2 = Monster("Monster2", monster_x,monster_y, monster_size, monster_size, GREEN)while not game_over:for event in pygame.event.get():if event.type == pygame.QUIT: game_over = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT: player_x-=player_speedelif event.key == pygame.K_RIGHT:player_x+=player_speed monster_y+= monster_speedif collision(player_x, player_y, monster_x, monster_y): score+=1 monster_x = random.randint(0, WIDTH-monster_size)monster_y=-monster_sizescreen.fill(back)player.rect.topleft = (player_x, player_y) player.fill()monster1.rect.topleft = (monster_x,monster_y)monster1.fill()show_score(10, 10)pygame.display.update()clock.tick(30)pygame.quit()очень срочно программа не работает. Нужно ​что бы игра заработала.
0 0
Перейти к ответам

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

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

Я думаю это должно заработать я исправил некоторые ваши ошибки в коде:

import pygame

import random

pygame.init()

WIDTH = 800

HEIGHT = 600

back = (0, 0, 0)

WHITE = (255, 255, 255)

RED = (255, 0, 0)

GREEN =(0, 255, 0)

screen = pygame.display.set_mode((WIDTH,HEIGHT))

pygame.display.set_caption("Патискаф направляется к Титанику!")

class Monster():

   def __init__(self,name,x=0,y=0,width=10,height=10, color=None):

       self.name = name

       self.rect = pygame.Rect(x, y, width,height)

       self.fill_color = back

       if color:

           self.fill_color = color

   def color(self, new_color):

       self.fill_color = new_color

   def fill(self):

       pygame.draw.rect(screen, self.fill_color, self.rect)

   def collidepoint(self, x,y):

       return self.rect.collidepoint(x, y)

   def colliderect(self, rect):

       return self.rect.colliderect(rect)

class Player():

   def __init__(self, name, x=0, y=0, width=10,height=10, color=None):

       self.name = name

       self.rect = pygame.Rect(x, y, width, height)

       self.fill_color = back

       if color:

           self.fill_color=color

   def color(self, new_color):

       self.fill_color = new_color

   def fill(self):

       pygame.draw.rect(screen, self.fill_color,self.rect)

   def collidepoint(self, x,y):

       return self.rect.collidepoint(x,y)

   def colliderect(self, rect):

       return self.rect.colliderect(rect)

player_size = 50

player_x=WIDTH/2-player_size/2

player_y = HEIGHT-player_size

player_speed=5

monster_size=50

monster_x=random.randint(0,WIDTH-monster_size)

monster_y=-monster_size

monster_speed=2

score=0

clock = pygame.time.Clock()

game_over = False

font = pygame.font.Font(None, 36)

def show_score(x, y):

   score_text=font.render(f"Score: {score}", True, WHITE)

   screen.blit(score_text, (x, y))

def collision(player_x, player_y, monster_x, monster_y):

   distance = ((player_x - monster_x)**2+ (player_y - monster_y)**2)**0.5

   if distance < player_size/2+monster_size/2:

       return True

   return False

player = Player ("Potiskaaf",player_x,player_y, player_size, player_size, WHITE)

monster1 = Monster("Monster", monster_x, monster_y, monster_size, monster_size, RED)

monster2 = Monster("Monster2", monster_x,monster_y, monster_size, monster_size, GREEN)

while not game_over:

   for event in pygame.event.get():

       if event.type == pygame.QUIT:

           game_over = True

       if event.type == pygame.KEYDOWN:

           if event.key == pygame.K_LEFT:

               player_x-=player_speed

           elif event.key == pygame.K_RIGHT:

               player_x+=player_speed

   

   monster_y+= monster_speed

   

   if collision(player_x, player_y, monster_x

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

It looks like there are a few issues in your code. Let's go through them:

  1. There is a syntax error in the show_score function. The closing square bracket ] should be a curly brace {. Replace "Score: [score}" with "Score: {score}".

  2. In the collision function, there is a typo in the line if distance &lt; player_size/2+monster_size/2:. Replace &lt; with <.

  3. The indentation of the collision check and score incrementation seems incorrect. Make sure they are indented properly under the if event.type == pygame.KEYDOWN: condition.

Here's the corrected code:

python
# ... (previous code) def show_score(x, y): score_text = font.render(f"Score: {score}", True, WHITE) screen.blit(score_text, (x, y)) def collision(player_x, player_y, monster_x, monster_y): distance = ((player_x - monster_x) ** 2 + (player_y - monster_y) ** 2) ** 0.5 if distance < player_size / 2 + monster_size / 2: return True return False # ... (remaining code)

After making these changes, your program should work better. If there are still issues or errors, please let me know, and I'll be happy to help you further.

0 0

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

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

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

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