import turtle as t
import random
import time
import simpleaudio as sa
import tkinter
import pygame
# def func():
# print("hello")
#
# win=tkinter.Tk()
# win.title("窗体")
# win.geometry("400x400+200+50")
#
# button=tkinter.Button(win,text="按钮",command=func)
# button.pack()
game1_over=False
game2_over=False
game2_begin=False
game3_over=False
game3_begin=False
t.register_shape("tom.gif")
t.register_shape("rat.gif")
t.register_shape("rat2.gif")
t.register_shape("dog.gif")
t.register_shape("bigdog.gif")
oh=sa.WaveObject.from_wave_file("ohh.wav")
point=sa.WaveObject.from_wave_file("point.wav")
over=sa.WaveObject.from_wave_file("over.wav")
victory=sa.WaveObject.from_wave_file("victory.wav")
pygame.mixer.init()
pygame.mixer.music.load("bgm.wav")
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play()
#记录时间
start_time=time.time()
used_time=0
#3.创建背景
game=t.Screen()
game.setup(1280,1024)
game.bgpic("bg2-.gif")
t.tracer(10)
#4.创建猫咪
cat=t.Turtle()
cat.shape("tom.gif")
cat.up()
score=0
life=3
pen3=t.Turtle()
pen3.ht()
pen3.speed(0)
pen3.up()
pen3.goto(-620,440)
score_text="Life:{} Point:{}".format(life,score)
font=('Arial',20,'bold')
pen3.color('seagreen')
pen3.write(score_text,align='left',font=font)
pen5=t.Turtle()
pen5.ht()
pen5.speed(0)
pen5.up()
pen5.goto(-70,440)
font=('Arial',20,'bold')
pen5.color('darkslategray')
pen5.write("Level one",align='left',font=font)
#17.加上计时
pen=t.Turtle()
pen.ht()
pen.up()
pen.setpos(420,440)
pen.color("seagreen")
pen.write("Time",align="left",font=("Arial",20,"bold"))
pen2=t.Turtle()
pen2.ht()
pen2.up()
pen2.setpos(560,440)
pen2.color("seagreen")
def update_time():
global used_time
now_used_time=int(time.time()-start_time)
if now_used_time>used_time:
used_time=now_used_time
time_str=str(used_time)
pen2.clear()
pen2.write(time_str,align="left",font=("Arial",20,"bold"))
if used_time >= 50:
pen2.color("darkred")
#11.创建小老鼠:传入图形和数量
def create_rats(shape,number):
rats_list=[]
for rat in range(number):
rat = t.Turtle()
rat.ht() #hideturtle
rat.up()
rat.speed(0)
rat.left(random.randint(0,360))
rat.shape(shape)
x=random.randint(-640,640)
y=random.randint(-500,400)
rat.setpos(x,y)
rat.st() #showturtle
rats_list.append(rat)
return rats_list
rat1_list=create_rats("rat.gif",6)
rat2_list=create_rats("rat2.gif",4)
dog1_list=create_rats("dog.gif",3)
#dog2_list=create_rats("bigdog.gif",3)
def move_left():
cat.left(30)
def move_right():
cat.right(30)
def speedup():
global cat_speed
cat_speed += 1
def slowdown():
global cat_speed
cat_speed -= 1
def catch_rat(rat,add_score):
global score
if cat.distance(rat)<60:
point.play()
x=random.randint(-640,640)
y=random.randint(-500,400)
rat.setpos(x,y)
score=score+add_score
pen3.clear()
pen3.write("Life:{} Point:{}".format(life,score),align='left',font=font)
def move_rat(rat,score,speed):
rat.fd(speed) #棕色老鼠的速度
catch_rat(rat,score)
x=rat.xcor()
y=rat.ycor()
if x>640 or x<-640 or y>400 or y<-500:
rat.left(180)
def move_dog(dog_list,point,speed):
global life
global score
for dog in dog_list:
dog.fd(speed) #狗的速度
if cat.distance(dog)<50:
oh.play()
dog.ht()
dog_list.remove(dog)
life=life-1;
score=score-point;
pen3.clear()
font=('Arial',20,'bold')
pen3.write("Life:{} Point:{}".format(life,score),align='left',font=font)
# if life == 0 :
# over.play()
# game_over=1
# pen4=t.Turtle()
# pen4.ht()
# pen4.speed(0)
# pen4.up()
# pen4.goto(-420,0)
# font=('Arial',30,'bold')
# pen4.color('silver')
# over_str="Game Over! "+str(score)+" points"
# pen4.write(over_str,align='left',font=font)
x=dog.xcor()
y=dog.ycor()
if x>640 or x<-640 or y>400 or y<-500:
dog.left(180)
def lose():
over.play()
pygame.mixer.music.pause()
pen4=t.Turtle()
pen4.ht()
pen4.speed(0)
pen4.up()
pen4.goto(-420,0)
font=('Arial',30,'bold')
pen4.color('silver')
over_str="Game Over! "+str(score)+" points"
pen4.write(over_str,align='left',font=font)
t.listen()
t.onkey(move_left,"Left")
t.onkey(move_right,"Right")
t.onkey(speedup,"Up")
t.onkey(slowdown,"Down")
cat_speed = 1
while 1:
#判断游戏结束
if game1_over:
break
update_time()
cat.fd(cat_speed)
x=cat.xcor()
y=cat.ycor()
if x>640 or x<-640 or y>400 or y<-500:
cat.left(180)
#12小老鼠动起来
for rat in rat1_list:
move_rat(rat,10,1)
for rat in rat2_list:
move_rat(rat,20,2)
#13小狗动起来
move_dog(dog1_list,15,3)
#判断第一关结束
if used_time==60:
game1_over=1
if score>=250:
game2_begin=True
victory.play()
pen5.clear()
pen5.write("Level two",align='left',font=font)
else:
pygame.mixer.music.pause()
over.play()
pen4=t.Turtle()
pen4.ht()
pen4.speed(0)
pen4.up()
pen4.goto(-420,0)
font=('Arial',30,'bold')
pen4.color('silver')
over_str="Game Over! "+str(score)+" points"
pen4.write(over_str,align='left',font=font)
if life==0:
lose()
game1_over=1
#第二关开始
if game2_begin:
dog2_list=create_rats("bigdog.gif",3)
life=3
while 2:
if game2_over:
break
update_time()
cat.fd(cat_speed)
x=cat.xcor()
y=cat.ycor()
if x>640 or x<-640 or y>400 or y<-500:
cat.left(180)
for rat in rat1_list:
move_rat(rat,10,1)
for rat in rat2_list:
move_rat(rat,20,2)
move_dog(dog1_list,15,3)
move_dog(dog2_list,-20,3)
if used_time==120:
game2_over=1
if score>=500:
game3_begin=True
victory.play()
pen5.clear()
pen5.write("Level Three",align='left',font=font)
else:
pygame.mixer.music.pause()
over.play()
pen4=t.Turtle()
pen4.ht()
pen4.speed(0)
pen4.up()
pen4.goto(-420,0)
font=('Arial',30,'bold')
pen4.color('silver')
over_str="Game Over! "+str(score)+" points"
pen4.write(over_str,align='left',font=font)
if life==0:
game2_over=1
lose()
#第三关开始
if game3_begin:
life=3
while 2:
if game3_over:
break
update_time()
cat.fd(cat_speed)
x=cat.xcor()
y=cat.ycor()
if x>640 or x<-640 or y>400 or y<-500:
cat.left(180)
for rat in rat1_list:
move_rat(rat,10,2)
for rat in rat2_list:
move_rat(rat,20,3)
move_dog(dog1_list,15,4)
move_dog(dog2_list,-20,4)
if used_time==180:
pygame.mixer.music.pause()
game3_over=1
if score>=1000:
victory.play()
bgm.stop()
pen6=t.Turtle()
pen6.ht()
pen6.speed(0)
pen6.up()
pen6.goto(-550,0)
font=('Arial',25,'bold')
pen6.color('coral')
over_str="Congratulations! You Win!"+str(score)+" points"
pen6.write(over_str,align='left',font=font)
else:
over.play()
pen4=t.Turtle()
pen4.ht()
pen4.speed(0)
pen4.up()
pen4.goto(-420,0)
font=('Arial',30,'bold')
pen4.color('silver')
over_str="Game Over! "+str(score)+" points"
pen4.write(over_str,align='left',font=font)
if life==0:
game3_over=1
lose()
game.mainloop()
python猫和老鼠
最新推荐文章于 2023-01-11 22:10:32 发布