Python for循环不再从0开始

Python for循环不再从0开始,python,pygame,Python,Pygame,方法移动器工作正常,直到列表中的元素按与以前不同的顺序组织。此时在方法移动器中,z变量得到4,然后for循环(第39行)从1到4计数,而不是从0到3。你知道我怎样才能解决这个问题吗? 如果有人能解决这个问题,我会非常高兴 import sys import pygame import random screenx = 500 screeny = 800 go = True speed = 0 playerx = 40 playery = 540 #zuerst xanfang dann

方法移动器工作正常,直到列表中的元素按与以前不同的顺序组织。此时在方法移动器中,z变量得到4,然后for循环(第39行)从1到4计数,而不是从0到3。你知道我怎样才能解决这个问题吗? 如果有人能解决这个问题,我会非常高兴

import sys
import pygame
import random

screenx = 500
screeny = 800

go = True
speed = 0

playerx = 40
playery = 540

#zuerst xanfang dann xende
gap = [200,300,300,400,100,200]

coordx = [0,300,0,400,0,200]
coordy = [-250,-250,-250,-250,-250,-250]
length = [120,120,120,120,120,120]
width = [200,200,300,100,100,300]

loops = 2
z = 2

pygame.init()
screen = pygame.display.set_mode([screenx,screeny])
screen.fill((0,0,0))
clock = pygame.time.Clock()
imgmid = pygame.image.load("figurschwarz.png")

def drawer():
    for i in range(len(coordx)):
        pygame.draw.rect(screen, (230,10,60), (coordx[i],coordy[i],width[i],length[i]), 0)

def mover():
    global z,coordy
    if loops % 250 == 0 and z<len(coordx)-1:
        z = z+2
    for x in range(0,z):
        print (x)
        if coordy[x] <= screeny+10:
            coordy[x] += 2  
        else:
            z -= 2
            print ("pop")
            for s in range(2):
                for f in range(z):
                    print(f)
                    coordy[f] = coordy[f+1]
                print (coordy)
            coordy.pop(z+1)
            coordy.pop(z)
            print (coordy)



def collisiondetection():
    global go
    #player on the left or right wall
    if playerx <= 0 or playerx+40 >= screenx:
        go = False


while go == True:
    loops += 1
    for event in pygame.event.get():
        if event.type == pygame.QUIT: sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                speed = -2
            if event.key == pygame.K_RIGHT:
                speed = 2
    screen.fill((0,0,0))
    playerx += speed
    screen.blit(imgmid, (playerx,playery))
    mover()
    drawer()
    collisiondetection()
    pygame.display.flip()
    clock.tick(110)

print ("Dein Score ist " + str(loops))
导入系统 导入pygame 随机输入 屏幕X=500 屏幕Y=800 正确 速度=0 playerx=40 playery=540 #祖尔斯特·山芳·丹恩·森德 差距=[200300400100200] coordx=[0300,0400,0200] coordy=[-250,-250,-250,-250,-250,-250] 长度=[120120] 宽度=[200300100300] 循环=2 z=2 pygame.init() screen=pygame.display.set_模式([screenx,screeny]) 屏幕填充((0,0,0)) clock=pygame.time.clock() imgmid=pygame.image.load(“figurschwarz.png”) def drawer(): 对于范围内的i(len(coordx)): pygame.draw.rect(屏幕,(230,10,60),(坐标[i],坐标[i],宽度[i],长度[i]),0) def mover(): 全局z,coordy
如果循环%250==0和z如果您在
x的
for
循环之前再放置一个
print

def mover():
global z,coordy
if loops % 250 == 0 and z<len(coordx)-1:
    print("loops = ".format(loops))
    z = z+2
print("range(0,z) = {}".format(range(0,z))) #<----Put this for debugging
for x in range(0,z):
    print ("x = {}".format(x))
    if coordy[x] <= screeny+10:  #<---------- Problem is here
        coordy[x] += 2  
    else:
        ...do something...
def mover():
全局z,coordy

如果循环%250==0和z,您是否介意解释一下
mover()
在游戏中做了什么?我正在看代码,但我想知道这个
mover()
函数在做什么。感谢您的回答,mover()基本上是将障碍物从顶部移动到底部。