资讯详情

Python龟太空入侵者子弹不打入侵者

一般来说,我是对的turtle和python很奇怪,所以如果我的代码看起来很混乱,我很抱歉。

我目前正在编写一个海龟版本的太空入侵者。我不明白为什么我的入侵者在攻击海龟时没有死亡。代码似乎和我能找到的所有其他太空入侵者的海龟程序一样。任何帮助都将非常感激。import turtle

import random

import math

#### Player ####

player1 = turtle.Turtle()

player1.shape("arrow")

player1.color("white")

player1.speed(0)

player1.penup()

player1.setheading(90)

player1.setposition(0, -175)

player1.speed(4)

def move_right():

x = player1.xcor()

x = playerspeed

if x > 210:

x = 210

player1.setx(x)

def move_left():

x = player1.xcor()

x -= playerspeed

if x < -210:

x = -210

player1.setx(x)

bulletlist = []

def fire():

if len(bulletlist) < 5:

bulletlist.append(Bullet())

#### Window ####

win = turtle.Screen()

win.bgcolor("black")

win.tracer(2)

border_pen = turtle.Turtle()

border_pen.speed(0)

border_pen.color("white")

border_pen.penup()

border_pen.setposition(-225, -225)

border_pen.pensize(3)

border_pen.pendown()

for side in range(4):

border_pen.fd(450)

border_pen.lt(90)

border_pen.hideturtle()

### Invader ###

class Invader(turtle.Turtle):

def __init__(self, xcor, ycor):

turtle.Turtle.__init__(self)

self.color("red")

self.shape("turtle")

self.penup()

self.speed(0)

self.setposition(xcor, ycor)

self.setheading(270)

self.speed(1)

self.hit = 0

### Bullet ###

bulletstate = 1

class Bullet(turtle.Turtle):

def __init__(self):

turtle.Turtle.__init__(self)

self.color("yellow")

self.shape("arrow")

self.shapesize(.5, 1)

self.penup()

self.speed(0)

self.setheading(90)

self.hideturtle()

self.bulletspeed = 20

fire()

def bullet_movement():

global firedb

firedb = bulletlist[-1]

firedb.speed(0)

ybul = firedb.ycor()

ybul = 10

firedb.sety(ybul)

if ybul > 195:

firedb.hideturtle()

def fire_bullet():

print("fire!")

firedb = bulletlist[-1]

firedb.hideturtle()

x = player1.xcor()

y = player1.ycor() 20

firedb.setpos(x, y)

firedb.showturtle()

if firedb.ycor() > 200:

firedb.hideturtle()

bulletlist.remove(firedb)

def bulletmake():

bulletfire = Bullet()

def bulletmechanics():

fire()

fire_bullet()

win.listen()

win.onkey(move_left, "Left")

win.onkey(move_right, "Right")

win.onkey(fire_bullet, "space")

enemies = []

xx = -175

xxxx = -175

for invader in range(19):

if invader <= 9:

enemies.append(Invader(xx, 200))

xx = 30

if invader >= 9:

enemies.append(Invader(xxxx, 175))

xxxx = 30

playerspeed = 7

enemyspeed = 8

def isCollision(t1, t2):

distance = math.sqrt(math.pow(t1.xcor()-t2.xcor(),2) math.pow(t1.ycor()-t2.ycor(),2))

if distance < 15:

return True

else:

return False

dead = []

while True:

global firedb

firedb = bulletlist[-1]

fire()

bullet_movement()

for Invader in enemies:

bullet_movement()

# if Invader.distance(firedb.xcor() 200, firedb.ycor() 200) < 1:

if isCollision(bulletlist[-1], Invader) == True:

print("AAAAAAAAGH")

isCollision(firedb, Invader)

Invader.hit = 1

if Invader.hit == 1:

Invader.color("orange")

if Invader.hit == 2:

Invader.color("yellow")

if Invader.hit == 3:

Invader.speed(0)

Invader.setpos(1000, 1000)

dead.append(Invader)

Invader.hideturtle()

for invader in enemies:

bullet_movement()

xpos = invader.xcor()

invader.speed(0)

xpos = enemyspeed

invader.setx(xpos)

if invader.xcor() > 200:

for invader in enemies:

ypos = invader.ycor()

ypos -= 40

invader.sety(ypos)

enemyspeed *= -1

if invader.xcor() < -200:

for invader in enemies:

y = invader.ycor()

y -= 40

invader.sety(y)

enemyspeed *= -1

标签: ybul压力变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司