Я пытаюсь сделать игру, в которой черепаха следует за вашей мышью, и вам нужно собрать определенное количество рыбы до истечения времени, но рыба исчезнет через некоторое время.Карты Python с 3 элементами
Моя проблема в том, что я не могу понять, как заставить рыбу исчезнуть. Я думал об использовании карты python. Единственная проблема заключается в том, что карты могут содержать только 2 элемента, которые соответствуют друг другу. Я хочу отслеживать три предмета: fish_count (количество разбросанных рыб) и позиции x и y каждого. Я хочу позже ссылаться на карту, чтобы увидеть, как заставить рыбу исчезнуть и удалить ее, когда черепаха сталкивается с рыбой.
Мой вопрос: Есть ли более простой способ для хранения информации, так что я могу отслеживать его проще и эффективнее
Я НЕ Просить КОД DUMP!
Вот мой код, который у меня уже:
import math
import random
import sys
import time
from pygame import *
import pygame
pygame.init()
#------Easy-Change Variables
mouse_visibility = False
turtlespeed = 4
#------Fonts
font = pygame.font.SysFont("C:/Python34/TurtleFont.ttf", 48)
#------Timer Setup
start_time = time.time()
elapsed_time = time.time() - start_time
#------Theme Music
pygame.mixer.music.load('C:/Python34/Jumpshot.mp3')
pygame.mixer.music.play(1, 0.0)
#------BG, Screen & Caption
pygame.display.set_caption('Fishy the Turtle')
screen = pygame.display.set_mode((1024, 616))
bg_img = pygame.image.load("C:/Python34/icebackground.png")
screen.blit(bg_img,(0,0))
pygame.display.flip()
#------Image Preparation
turtle = pygame.image.load("C:/Python34/turtle.png")
fish = pygame.image.load("C:/Python34/fish.png")
#------Movement, Coords, Collisions & Fish
turtlepos = pygame.mouse.get_pos()
pygame.mouse.set_visible(mouse_visibility)
fish_count = 0
if pygame.mouse.get_pressed()[1] == True:
while 1 == 1:
mousepos = pygame.mouse.get_pos()
text = font.render("Points: %s" % points, True, (0, 128, 0))
screen.blit(text, (0, 0))
new_fish = random.randint(0, 6)
fish_x = random.randint(0, 943)
fish_y = random.randint(0, 552)
if mousepos[1] - turtlepos[1] < 0:
turtlepos[1] -= turtlespeed
else:
turtlepos[1] += turtlespeed
if mousepos[2] - turtlepos[2] < 0:
turtlepos[2] -= turtlespeed
else:
turtlepos[2] += turtlespeed
if elapsed_time == 45:
sys.exit()
print("Sorry! Game Over!")
screen.blit(turtle,(turtlepos[1],turtlepos[2]))
pygame.display.flip()
if new_fish == 0:
screen.blit(fish,(fish_x, fish_y)
pygame.display.flip()
fish_count += 1
pygame.display.update()
mainClock.tick(40)
EDIT: Полный проект до сих пор:
import math
import random
import sys
import time
from pygame import *
import pygame
pygame.init()
#------Easy-Change Variables
mouse_visibility = False
turtlespeed = 4
#------Font
font = pygame.font.SysFont("C:/Python34/TurtleFont.ttf", 48)
#------Theme Music & Sound Effects
pygame.mixer.music.load('C:/Python34/Jumpshot.mp3')
pygame.mixer.music.play(1, 0.0)
chomp = pygame.mixer.Sound("C:/Python34/chomp.wav")
#------BG, Screen & Caption
pygame.display.set_caption('Fishy the Turtle')
screen = pygame.display.set_mode((1024, 616))
bg_img = pygame.image.load("C:/Python34/icebackground.png")
screen.blit(bg_img,(0,0))
pygame.display.flip()
#------Image Preparation
turtle = pygame.image.load("C:/Python34/turtle.png")
fish = pygame.image.load("C:/Python34/fish.png")
#------Movement, Coords, Collisions & Fish
turtlepos = pygame.mouse.get_pos()
pygame.mouse.set_visible(mouse_visibility)
turtle_rect = turtle.get_rect()
fish_rect = fish.get_rect()
points = 0
fish_pos_list = []
if pygame.mouse.get_pressed()[1] == True:
while 1 == 1:
mousepos = pygame.mouse.get_pos()
text = font.render("Points: %s" % points, True, (0, 128, 0))
screen.blit(text, (0, 0))
new_fish = random.randint(0, 6)
fish_x = random.randint(0, 943)
fish_y = random.randint(0, 552)
if mousepos[1] - turtlepos[1] < 0:
turtlepos[1] -= turtlespeed
else:
turtlepos[1] += turtlespeed
if mousepos[2] - turtlepos[2] < 0:
turtlepos[2] -= turtlespeed
else:
turtlepos[2] += turtlespeed
screen.blit(turtle_rect,(turtlepos[1],turtlepos[2]))
pygame.display.flip()
if new_fish == 0:
screen.blit(fish_rect,(fish_x, fish_y)
pygame.display.flip()
fish_count += 1
start_time = time.time()
positions = {'x':fish_x, 'y':fish_y, 'fishtimer':start_time}
fish_pos_list.append(positions)
if time.time() - fish_pos_list[FISHTIMER OF FIRST ITEM IN LIST] >= 10:
screen.blit(bg_img, (X OF FIRST ITEM, Y OF FIRST ITEM), pygame.Rect(X OF FIRST ITEM, Y OF FIRST ITEM, 81, 62))
del fish_pos_list[0]
if turtle_rect.colliderect(fish_rect):
screen.blit(bg_img, (X OF FIRST ITEM, Y OF FIRST ITEM), pygame.Rect(X OF FIRST ITEM, Y OF FIRST ITEM, 81, 62))
chomp.play()
DELETE FISH FROM LIST
points += 1
pygame.display.update()
mainClock.tick(40)
Спасибо за помощь мне с этим, hd1, но я не могу сказать, постион в позиции (я называю позицию «fish_pos_list»), потому что у меня есть это, если заявление:
if new_fish == 0:
screen.blit(fish_rect,(fish_x, fish_y)
pygame.display.flip()
fish_count += 1
start_time = time.time()
positions = {'x':fish_x, 'y':fish_y, 'fishtimer':start_time}
fish_pos_list.append(positions)
у меня есть все го e словарей (карт) с поименованными позициями, поэтому он будет смущен, когда я скажу о позициях, потому что они все называются позициями. Еще раз спасибо TON за помощь!
Если у меня есть куча словарей внутри списка, и я хочу чтобы увидеть список рыб первого словаря, как бы я это написал? Просто первый словарь списка, хотя, потому что я хочу иметь оператор if, говорящий «если время (количество рыб) первого словаря больше или равно десяти секундам, избавиться от рыбы и удалить ее из списка», Я просто не знаю, как сказать первую часть. –
Просьба видеть мое редактирование - также, вы должны проголосовать за принятые ответы – hd1
Мне не хватает репутации. Я бы очень любил твою почту, и я пробовал раньше, но мне нужно 15 человек. –