Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python映射有3项_Python_Python 3.x_Python 2.7_Pygame - Fatal编程技术网

Python映射有3项

Python映射有3项,python,python-3.x,python-2.7,pygame,Python,Python 3.x,Python 2.7,Pygame,我正在做一个游戏,一只乌龟跟着你的老鼠,你必须在时间用完之前收集一定数量的鱼,但是鱼过一会儿就消失了 我的问题是我不知道如何让鱼消失。我想到了使用python映射。唯一的问题是,地图只能有两个相互对应的项目。我想记录三个项目,fish_count(被闪电击中的鱼的数量),以及每个项目的x和y位置。我想稍后参考地图,查看何时使鱼消失,并在海龟与鱼碰撞时删除它们 我的问题是:是否有一种更简单的方法来存储信息,以便我更容易、更有效地跟踪信息 我不是要求代码转储 以下是我已经拥有的代码: import

我正在做一个游戏,一只乌龟跟着你的老鼠,你必须在时间用完之前收集一定数量的鱼,但是鱼过一会儿就消失了

我的问题是我不知道如何让鱼消失。我想到了使用python映射。唯一的问题是,地图只能有两个相互对应的项目。我想记录三个项目,fish_count(被闪电击中的鱼的数量),以及每个项目的x和y位置。我想稍后参考地图,查看何时使鱼消失,并在海龟与鱼碰撞时删除它们

我的问题是:是否有一种更简单的方法来存储信息,以便我更容易、更有效地跟踪信息

我不是要求代码转储

以下是我已经拥有的代码:

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)
我把所有的字典(地图)都命名为位置,所以当我说位置时会感到困惑,因为它们都被称为位置。再次感谢你对我的帮助

虽然地图(或字典)每个可以有2个项目,但没有规则规定项目本身必须是标量。请参见以下示例:

position = {'x':1, 'y':3, 'fishcount':5}
positions = []
positions.append(position)
针对您的评论:

for position in positions:
    if position['fishcount'] > 9:
        # do stuff
    else:
        # do other stuff
希望有帮助。如果您还有其他问题,请随时发表评论。

您可以使用

从集合导入namedtuple

Fish=namedtuple('Fish','count,x,y')

a\u fish=fish(鱼数、鱼x、鱼y)

然后您可以通过索引访问:
a_fish[0]

或者按名称访问:
a_fish.fish\u count

如果我在一个列表中有一堆词典,并且我想查看第一个词典的fishcount,我将如何编写它?只是列表中的第一个字典,因为我想有一个if语句,说“如果第一个字典的时间(fishcount)大于或等于10秒,把鱼扔掉并从列表中删除”我只是不知道如何说出第一部分。请看我的编辑——还有,你应该投票支持被接受的答案我没有足够的代表。我真的很想提升你的帖子,我之前也尝试过,但我需要15个代表。你可能想看看原始帖子的底部。谢谢哎呀,忘了给你贴标签了@hd1
position = {'x':1, 'y':3, 'fishcount':5}
positions = []
positions.append(position)
for position in positions:
    if position['fishcount'] > 9:
        # do stuff
    else:
        # do other stuff