微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么它不更新圆圈应该向右移动一个?

如何解决为什么它不更新圆圈应该向右移动一个?

import random,pygame


#window setup aswell as global variable
pygame.init()
screen_size = 400
global window
window = pygame.display.set_mode((screen_size,screen_size))
pygame.display.set_caption("evolution simulator")
pygame.display.update()

def draw_Window():
    global Grid
    Grid = [[]]
    blockSize = 20
    for x in range(0,20):
        for y in range(0,20):
            Grid.append(1)
            rect = pygame.Rect(x*blockSize,y*blockSize,blockSize,blockSize)
            pygame.draw.rect(window,(0,0),rect,1)




class spurgs:
    def __init__(self,age,hunger,speed,gender,x,y,race):
        # 1 for male,2 for female
        self.hunger = hunger
        self.speed = speed
        self.gender = gender
        self.age = age
        self.race = race
        self.x = x
        self.y = y
        self.size = 8
    def update(self):
        self.age = self.age + 1
        self.draw()


#SURVIVAL ELEMENTS
    def eat(self):
        self.hunger +=1
        #remove some food  to affect global food resource
    def breed(self,mate):
        # In the generation class,make a list for the next generation and append baby to the list
        pass
# MOVEMENT
    def move(self,dir):
        if dir == "right":
            self.x += 1
        self.update()


#DRAWING
    def draw(self):
        #for grid system
        x = self.y * 20 - 10
        y = self.y * 20 - 10
        pygame.draw.circle(window,self.race,(x,y),self.size)




run = True
test_spurg = spurgs(age = 15,hunger = 100,speed = 0.001,gender = 2,x = 1,y = 1,race = (0,255,100))

年龄 = 15 等的额外小部分,但我更容易查看但问题不是来自正在初始化的实例

while run:
    #WINDOW
    window.fill((0,200,255))
    draw_Window()
    #QUIT CONDITION
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            print("closing the loop")
            run = False
    #TESTING
    print (test_spurg.x,test_spurg.y)
    test_spurg.move("right")
    test_spurg.update()

在这里打印 x 和 y 以检查它们是否在增加并且它正常运行

    #FINAL LOOP
    pygame.display.update()
    pygame.time.delay(1000)
pygame.quit()

我使用延迟来减慢更新功能

如果我在标准化表格方面犯了任何错误,请告诉我!!

解决方法

问题出在您的 draw() 函数中:

    def draw(self):
        #for grid system
        x = self.y * 20 - 10
        y = self.y * 20 - 10
        pygame.draw.circle(window,self.race,(x,y),self.size)

如您所见,x 中的 x = self.y * 20 - 10 需要替换为 y 才能成为 x = self.x * 20 - 10

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。