前言
之前看CSDN关于Pygame的文章,所讲的制作的游戏都是像贪吃蛇之类的游戏。这次,我要挑战教程做Undertale AU。
制作准备
首先得下载Pygame,在cmd中输入以下指令:
pip install pygame
然后就等带它下载好。具体过程可以网上查,这里就不细讲了。
导入
这次我们需要三个库:Pygame(这个不用说了吧),sys(关闭后台),math(三角函数调用)
代码如下:
#导入
import pygame,sys,math
封装基本函数
精灵
这个嘛……首先,肯定要封装精灵类。精灵类是什么?就是相当于图形化编程的“精灵”的定义,总之就是很抽象。那么,接下来就让我们来封装吧。
初始化
一个精灵需要图片,坐标可上下左右边界,color_key等。所以,我们要将它们初始化:
def __init__(self,path,init_x=0,init_y=0,color_key=(0,0,0)):
self.deg = 0
self.image = pygame.image.load(path)
self.image.set_colorkey(color_key)
self.x = init_x
self.y = init_y
self.rect = self.image.get_rect()
self.hei = self.rect.top - self.rect.bottom
self.wed = self.rect.right - self.rect.left
self.up = self.y
self.down = self.y-self.hei
self.left = self.x
self.right = self.x+self.wed
self.a = self.hei
self.b = self.wed
构造函数,初始化Player对象。接收图像路径、初始坐标和颜色键作为参数。设置了初始角度为0,并加载图像文件。使用颜色键将图像的指定颜色设置为透明色。初始化了位置和尺寸等属性。
Pygame用pygame.image.load()来加载图片,用color_key来设置要去掉的颜色,可以用颜色单词,也可以用RBG三元组(这里就是RBG)。
上面代码中get_rect是获取边界的方法。但为了提高运行速度,这里选择只调用一次,后续直接上下左右边界同时改变一个量就行了。
缩放函数
def mag(self,a,b):
self.image = pygame.transform.scale(self.image,(a,b))
self.rect = self.image.get_rect()
self.get()
将图像缩放到指定的尺寸。通过调用pygame库的transform模块中的scale()方法来实现。根据指定的宽度和高度参数,将图像缩放到新的尺寸。更新了相应的属性。
其中a是图像缩放后的长度,b是是缩放后的宽度。这都不用记的,直接在网上查就可以了。
旋转函数
def turn(self,deg,color_key=(0,0,0)):
self.deg += deg
self.image = pygame.transform.rotate(self.image,deg)
self.image.set_colorkey(color_key)
self.rect = self.image.get_rect()
self.hei = self.rect.top - self.rect.bottom
self.weg = self.rect.right - self.rect.left
self.up = self.y
self.down = self.y-self.hei
self.left = self.x
self.right = self.x+self.weg
旋转图像指定的角度。通过调用pygame库的transform模块中的rotate()方法来实现。根据指定的角度参数,将图像旋转相应的角度。使用颜色键将指定颜色设置为透明色。更新了相应的属性。
但是,这有一个问题。就是要判定碰撞的话如果角度不是90度的倍数就没法判定了。具体原因等会儿再将(为什么不改?主要是懒得改了,这样也能用)
获取边界的坐标
def get(self):
self.hei = self.rect.top - self.rect.bottom
self.wed = self.rect.right - self.rect.left
self.up = self.y
self.down = self.y-self.hei
self.left = self.x
self.right = self.x+self.wed
更新图像的属性。根据图像的当前状态和位置,更新了边界、高度和宽度等属性。
这个就不用说了吧,和初始化的一样,hei是图像(Rect)的高度,wed是宽度。这个应该能直接看懂的(注意,Pygame采用的是笛卡尔坐标系,x轴往右是正方向,y轴往下是正方向)。
更换造型函数
def changeImage(self,path,color_key=(0,0,0)):
self.image = pygame.image.load(path)
self.image.set_colorkey(color_key)
self.rect = self.image.get_rect()
self.get()
这个和初始化一样,不细讲了。
渲染函数
def put(self):
screen.blit(self.image,(self.x,self.y))
更改图像。加载指定的图像文件,并使用颜色键将指定颜色设置为透明色。更新了相应的属性。
在屏幕上显示图像。使用screen.blit()方法将图像绘制在屏幕上,位置为当前位置。
精灵移动
def move(self,m,n):
self.x+=m
self.y+=n
self.get()
移动位置。将当前位置的x和y坐标分别增加m和n,实现在指定方向上移动。
def goto(self,x,y):
self.x=x
self.y=y
self.get()
设置位置。将当前位置的x和y坐标设置为指定的坐标,实现位置的直接跳转。
def fwd(self,deg,s):
self.move(math.sin(math.radians(deg)) * s, math.cos(math.radians(deg)) * s)
向前移动。根据指定的角度和速度参数,计算出x和y方向上的位移量,并调用move()方法移动位置。计算x和y方向上的位移量时使用了三角函数sin和cos。
完整代码
class Player:
def __init__(self,path,init_x=0,init_y=0,color_key=(0,0,0)):
self.deg = 0
self.image = pygame.image.load(path)
self.image.set_colorkey(color_key)
self.x = init_x
self.y = init_y
self.rect = self.image.get_rect()
self.hei = self.rect.top - self.rect.bottom
self.wed = self.rect.right - self.rect.left
self.up = self.y
self.down = self.y-self.hei
self.left = self.x
self.right = self.x+self.wed
self.a = self.hei
self.b = self.wed
def mag(self,a,b):
self.image = pygame.transform.scale(self.image,(a,b))
self.rect = self.image.get_rect()
self.get()
#放大至
def turn(self,deg,color_key=(0,0,0)):
self.deg += deg
self.image = pygame.transform.rotate(self.image,deg)
self.image.set_colorkey(color_key)
self.rect = self.image.get_rect()
self.hei = self.rect.top - self.rect.bottom
self.weg = self.rect.right - self.rect.left
self.up = self.y
self.down = self.y-self.hei
self.left = self.x
self.right = self.x+self.weg
def get(self):
self.hei = self.rect.top - self.rect.bottom
self.wed = self.rect.right - self.rect.left
self.up = self.y
self.down = self.y-self.hei
self.left = self.x
self.right = self.x+self.wed
def changeImage(self,path,color_key=(0,0,0)):
self.image = pygame.image.load(path)
self.image.set_colorkey(color_key)
self.rect = self.image.get_rect()
self.get()
def put(self):
screen.blit(self.image,(self.x,self.y))
def move(self,m,n):
self.x+=m
self.y+=n
self.get()
def goto(self,x,y):
self.x=x
self.y=y
self.get()
def fwd(self,deg,s):
self.move(math.sin(math.radians(deg)) * s, math.cos(math.radians(deg)) * s)
文字渲染函数
这个我是直接看着网上的教程做的。
#文字显示函数(仅支持英文)
def write(s,pos=(100,100),size=0.5,color=(0,0,0)):
myfont = pygame.font.Font(None,60)
a = myfont.render(str(s),True,color)
b = new_text = pygame.transform.rotozoom(a,0,size)
screen.blit(b,pos)
-
write(s, pos=(100,100), size=0.5, color=(0,0,0)): 函数的参数包括文字内容s、位置pos、大小size和颜色color。默认情况下,文字位置为(100,100),大小为0.5,颜色为黑色。
-
myfont = pygame.font.Font(None, 60): 创建一个字体对象myfont,使用pygame库的font模块中的Font类。字体文件路径设置为None,表示使用默认字体。字体大小为60。
-
a = myfont.render(str(s), True, color): 使用字体对象myfont的render()方法生成一个文字图像对象a。将传入的文字内容s转换为字符串形式,在屏幕上显示时记得转换后的内容。
-
b = new_text = pygame.transform.rotozoom(a, 0, size): 使用pygame库的transform模块中的rotozoom()方法,将文字图像对象a按照指定的缩放比例size进行缩放。角度参数设置为0,表示不进行旋转。将缩放后的图像对象赋值给变量b,并同时将其赋值给变量new_text。
-
screen.blit(b, pos): 使用screen.blit()方法将缩放后的文字图像b绘制在屏幕上,位置为pos。这样就在屏幕上显示了文字。
碰撞函数
def coll(a,b):
m = a.up<b.down and a.down>b.up
n = a.left<b.right and a.right>b.left
return m and n
很简单,就是之前力扣做到过的如何判断两个矩形有碰撞。
GB类
这个……玩过的都知道这是什么玩意……
class Gb:
def __init__(self):
self.Flag = True
self.cnt=0
self.deg = 0
self.flag = False
self.line = Player("GB3.jpg")
self.GB = Player("GB1.jpg")
self.GB.goto(100,100)
self.GB.mag(100,100)
self.target_x = 0
self.target_y = 0
def set_target(self,x,y,deg,isset=True):
playSound("shoot1.wav")
self.target_x,self.target_y=x,y
if isset:
self.deg = deg
self.GB.turn(deg)
def move(self):
if not (abs(self.GB.x-self.target_x)<1 and abs(self.GB.y-self.target_y)<1):
self.GB.move(-(self.GB.x-self.target_x)*0.02,-(self.GB.y-self.target_y)*0.02)
else:
self.GB.goto(self.target_x,self.target_y)
def put(self):
global hp
if self.Flag:
self.GB.put()
if self.flag:
self.line.put()
def shoot(self):
global hp,jud
if self.cnt == 0:
playSound("shoot2.wav")
self.flag = True
self.GB.changeImage("GB2.jpg")
self.GB.mag(100,100)
self.GB.turn(self.deg)
self.line.turn(self.deg)
self.line.goto(self.target_x,self.target_y)
self.line.fwd(-self.deg+90,30)
self.line.fwd(-self.deg,1300)
self.cnt += 1
elif self.cnt < 150:
self.cnt += 1
self.GB.fwd(self.deg,4)
self.line.fwd(self.deg,4)
if coll(self.line,jud):
hp -= 0.25
playSound("hurtsound.wav")
else:
self.Flag = False
__init__
方法用于初始化Gb
对象的各种属性,包括位置、图像、目标坐标等。set_target
方法设置Gb
对象的目标坐标和旋转角度。它还播放一个音效。move
方法将Gb
对象移动到目标坐标。put
方法通过调用与其关联的Player
对象的put
方法,将Gb
对象放置在游戏屏幕上。shoot
方法模拟Gb
对象的射击行为。它更改Gb
对象的图像,移动它和与之关联的Player
对象,并检查与名为jud
的另一个对象的碰撞。
(写不下去了。。。)
决心移动函数
def move_heart(color):
global move_speed,keys,heart,jud
if color == "red":
if keys[pygame.K_UP] and heart.y>kuang.y:heart.move(0,-0.5)
if keys[pygame.K_DOWN] and heart.y<kuang.y+200:heart.move(0,0.5)
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
if color == "blue":
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
if move_speed == 2:
if keys[pygame.K_UP]:
move_speed -= 0.01
elif move_speed > 0:
if keys[pygame.K_UP]:
heart.move(0,-move_speed)
move_speed -= 0.01
else:
move_speed = 0
elif heart.y<580:
heart.move(0,-move_speed)
move_speed -= 0.01
else:
move_speed = 2
jud.goto((heart.left+heart.right)/2,(heart.up+heart.down)/2)
jud用了中点公式。。。
刷新函数
def ud():
global hp
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
say(".................")
pygame.quit()
sys.exit()
say("Naive, you really think you can turn me off")
if hp<=0:
pygame.quit()
sys.exit()
...本来这个退出很变态的,改了一下
说话函数
keys = pygame.key.get_pressed()
def say(text,text_pos = (570,40)):
global cnt
l = len(text)
step = -1
a = 0
l = len(text)
while step <= l:
if a%10==0:
playSound("voice.wav")
screen.fill((0, 0, 0))
talk.put()
kuang.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
heart.put()
draw_xt()
xxk.put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
step+=0.2
a+=1
Say(text[:int(step)],text_pos)
#move_heart("red")
ud()
keys = pygame.key.get_pressed()
while not keys[pygame.K_z]:
screen.fill((0, 0, 0))
put_hp()
draw_xt()
talk.put()
heart.put()
kuang.put()
xxk.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
Say(str(text),text_pos)
#move_heart("red")
keys = pygame.key.get_pressed()
ud()
while keys[pygame.K_z]:
screen.fill((0, 0, 0))
xxk.put()
talk.put()
kuang.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
heart.put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
Say(text,text_pos)
#move_heart("red")
keys = pygame.key.get_pressed()
ud()
- 首先,使用
pygame.key.get_pressed()
函数获取当前键盘按键的状态,并将其存储在keys
变量中。 - 然后,通过调用
say
函数来显示一段文本,文本内容存储在text
变量中。say
函数根据文本的长度和step
变量来逐步显示文本,并播放声音。 - 在
while
循环中,检查按下的键是否为 Z 键。如果不是,则继续显示对话框和其他游戏元素。该循环用于等待玩家按下 Z 键结束对话。 - 在按下 Z 键后,进入第二个
while
循环中。该循环用于等待玩家释放 Z 键,同时继续显示对话框和其他游戏元素。 - 在两个
while
循环中,代码还会更新角色的动画,显示血条和其他游戏元素。
算了,完整代码附上
#导入
import pygame,sys,math
#初始化
pygame.init()
size = (1000,800)#宽和高
global screen
global hp
screen = pygame.display.set_mode(size)#创建窗口
pygame.display.set_caption("Ink!Sans fight")#设置标题
def playSound(src):
a = pygame.mixer.Sound(src)
a.play()
#角色导入函数
class Player:
def __init__(self,path,init_x=0,init_y=0,color_key=(0,0,0)):
self.deg = 0
self.image = pygame.image.load(path)
self.image.set_colorkey(color_key)
self.x = init_x
self.y = init_y
self.rect = self.image.get_rect()
self.hei = self.rect.top - self.rect.bottom
self.wed = self.rect.right - self.rect.left
self.up = self.y
self.down = self.y-self.hei
self.left = self.x
self.right = self.x+self.wed
self.a = self.hei
self.b = self.wed
def mag(self,a,b):
self.image = pygame.transform.scale(self.image,(a,b))
self.rect = self.image.get_rect()
self.get()
#放大至
def turn(self,deg,color_key=(0,0,0)):
self.deg += deg
self.image = pygame.transform.rotate(self.image,deg)
self.image.set_colorkey(color_key)
self.rect = self.image.get_rect()
self.hei = self.rect.top - self.rect.bottom
self.weg = self.rect.right - self.rect.left
self.up = self.y
self.down = self.y-self.hei
self.left = self.x
self.right = self.x+self.weg
def get(self):
self.hei = self.rect.top - self.rect.bottom
self.wed = self.rect.right - self.rect.left
self.up = self.y
self.down = self.y-self.hei
self.left = self.x
self.right = self.x+self.wed
def changeImage(self,path,color_key=(0,0,0)):
self.image = pygame.image.load(path)
self.image.set_colorkey(color_key)
self.rect = self.image.get_rect()
self.get()
def put(self):
screen.blit(self.image,(self.x,self.y))
def move(self,m,n):
self.x+=m
self.y+=n
self.get()
def goto(self,x,y):
self.x=x
self.y=y
self.get()
def fwd(self,deg,s):
self.move(math.sin(math.radians(deg)) * s, math.cos(math.radians(deg)) * s)
#文字显示函数(仅支持英文)
def write(s,pos=(100,100),size=0.5,color=(0,0,0)):
myfont = pygame.font.Font(None,60)
a = myfont.render(str(s),True,color)
b = new_text = pygame.transform.rotozoom(a,0,size)
screen.blit(b,pos)
#检测碰撞函数
global hp
global coll
def coll(a,b):
m = a.up<b.down and a.down>b.up
n = a.left<b.right and a.right>b.left
return m and n
hp=92
#结尾刷新函数
#播放音乐函数
def playMusic(path):
pygame.mixer.init()
pygame.mixer.music.load(path)
pygame.mixer.music.play(-1)
#设定帧数
clock = pygame.time.Clock()
clock.tick(115)#故意的
#自定义设定
global jud
jud = Player("jud.png")
xxk = Player("0.png")
xxk.goto(130,700)
xxk.mag(700,60)
heart = Player("heart1.png",init_x=500,init_y=500)
heart.mag(32,32)
Ink_Sans = {
"head" : Player("head.png"),
"body" : Player("body.png"),
"leg" : Player("leg.png")
}
kuang = Player("kuang0.png")
kuang.goto(350,380)
bones = []
step = 0
fight_box = Player("Fight_box0.png")
fight_box.goto(270,400)
global show_hp
show_hp = [Player("hp9.png"),Player("hp9.png")]
show_hp[0].goto(674,647)
show_hp[1].goto(700,647)
slice = Player("slice1.png")
slice.goto(480,170)
def put_hp():
show_hp[0].changeImage("hp"+str(int(hp//10))+".png")
show_hp[1].changeImage("hp"+str(int(hp%10))+".png")
show_hp[0].mag(23,32)
show_hp[1].mag(23,32)
show_hp[0].put()
show_hp[1].put()
class Gb:
def __init__(self):
self.Flag = True
self.cnt=0
self.deg = 0
self.flag = False
self.line = Player("GB3.jpg")
self.GB = Player("GB1.jpg")
self.GB.goto(100,100)
self.GB.mag(100,100)
self.target_x = 0
self.target_y = 0
def set_target(self,x,y,deg,isset=True):
playSound("shoot1.wav")
self.target_x,self.target_y=x,y
if isset:
self.deg = deg
self.GB.turn(deg)
def move(self):
if not (abs(self.GB.x-self.target_x)<1 and abs(self.GB.y-self.target_y)<1):
self.GB.move(-(self.GB.x-self.target_x)*0.02,-(self.GB.y-self.target_y)*0.02)
else:
self.GB.goto(self.target_x,self.target_y)
def put(self):
global hp
if self.Flag:
self.GB.put()
if self.flag:
self.line.put()
def shoot(self):
global hp,jud
if self.cnt == 0:
playSound("shoot2.wav")
self.flag = True
self.GB.changeImage("GB2.jpg")
self.GB.mag(100,100)
self.GB.turn(self.deg)
self.line.turn(self.deg)
self.line.goto(self.target_x,self.target_y)
self.line.fwd(-self.deg+90,30)
self.line.fwd(-self.deg,1300)
self.cnt += 1
elif self.cnt < 150:
self.cnt += 1
self.GB.fwd(self.deg,4)
self.line.fwd(self.deg,4)
if coll(self.line,jud):
hp -= 0.25
playSound("hurtsound.wav")
else:
self.Flag = False
delta = 5000
global flag
global keys
#循环条件变量
flag = True
fight = Player("fight0.png")
fight.mag(20,200)
Sans = Player("Sans.gif")
move_speed = 0
def move_heart(color):
global move_speed,keys,heart,jud
if color == "red":
if keys[pygame.K_UP] and heart.y>kuang.y:heart.move(0,-0.5)
if keys[pygame.K_DOWN] and heart.y<kuang.y+200:heart.move(0,0.5)
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
if color == "blue":
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
if move_speed == 2:
if keys[pygame.K_UP]:
move_speed -= 0.01
elif move_speed > 0:
if keys[pygame.K_UP]:
heart.move(0,-move_speed)
move_speed -= 0.01
else:
move_speed = 0
elif heart.y<580:
heart.move(0,-move_speed)
move_speed -= 0.01
else:
move_speed = 2
jud.goto((heart.left+heart.right)/2,(heart.up+heart.down)/2)
def ud():
global hp
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
say(".................")
pygame.quit()
sys.exit()
say("Naive, you really think you can turn me off")
if hp<=0:
pygame.quit()
sys.exit()
global cnt
cnt = 0
def Say(saytext,pos,color=(0,0,0),max_len=20,si=0.5):
x,y=pos[0],pos[1]
st = ""
cnt = 0
l = len(saytext)
for i in range(l):
st+=saytext[i]
if (i+1)%(max_len+1)==0 or i==l-1:
write(st,(x,y+cnt*40*si),size=si,color=color)
st=""
cnt += 1
keys = pygame.key.get_pressed()
def say(text,text_pos = (570,40)):
global cnt
l = len(text)
step = -1
a = 0
l = len(text)
while step <= l:
if a%10==0:
playSound("voice.wav")
screen.fill((0, 0, 0))
talk.put()
kuang.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
heart.put()
draw_xt()
xxk.put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
step+=0.2
a+=1
Say(text[:int(step)],text_pos)
#move_heart("red")
ud()
keys = pygame.key.get_pressed()
while not keys[pygame.K_z]:
screen.fill((0, 0, 0))
put_hp()
draw_xt()
talk.put()
heart.put()
kuang.put()
xxk.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
Say(str(text),text_pos)
#move_heart("red")
keys = pygame.key.get_pressed()
ud()
while keys[pygame.K_z]:
screen.fill((0, 0, 0))
xxk.put()
talk.put()
kuang.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
heart.put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
Say(text,text_pos)
#move_heart("red")
keys = pygame.key.get_pressed()
ud()
global xt
xt = {
"zhe":Player("Lv.png",color_key=(255,0,0),init_x=80,init_y=640),
"di":Player("xt3.png",init_x=459,init_y=650),
"xt":Player("xt2.png",init_x=420,init_y=650)
}
xt["zhe"].mag(800,45)
xt["di"].mag(180,35)
xt["xt"].mag(180,35)
def draw_xt():
xt["xt"].goto(hp*1.5+321,650)
xt["di"].put()
xt["xt"].put()
xt["zhe"].put()
talk = Player("talk.png",530,00)
Ink_Sans["head"].goto(440,100)
Ink_Sans["body"].goto(395,130)
Ink_Sans["leg"].goto(430,215)
#说话
say("Kid...")
say("You know that,None of this is quite right...")
say("Well, I know, it's all your doing")
say("Unless I do something, you're not going back")
say("Then let this never-ending battle begin")
gb = Gb()
gb.set_target(650,470,90)
Sans.goto(400,132)
for i in range(50):
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
put_hp()
heart.put()
#Sans.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
Ink_Sans["head"].move(-1,0)
Ink_Sans["body"].move(-1,0)
Ink_Sans["leg"].move(-1,0)
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and heart.y>kuang.y:heart.move(0,-0.5)
if keys[pygame.K_DOWN] and heart.y<kuang.y+200:heart.move(0,0.5)
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
ud()
for i in range(50):
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
heart.put()
Sans.put()
put_hp()
Sans.move(1.5,0)
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
Ink_Sans["head"].move(-1,0)
Ink_Sans["body"].move(-1,0)
Ink_Sans["leg"].move(-1,0)
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and heart.y>kuang.y:heart.move(0,-0.5)
if keys[pygame.K_DOWN] and heart.y<kuang.y+200:heart.move(0,0.5)
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
ud()
#heart.changeImage("heart2.png")
while flag:
'''
if hp<=10:
hp=100 #锁血
'''
screen.fill((0, 0, 0))
#hp = 5
gb.put()
xxk.put()
kuang.put()
heart.put()
Sans.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
'''
if keys[pygame.K_UP] and heart.y>kuang.y:heart.move(0,-0.5)
if keys[pygame.K_DOWN] and heart.y<kuang.y+200:heart.move(0,0.5)
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
jud.goto((heart.left+heart.right)/2,(heart.up+heart.down)/2)
'''
move_heart("red")
jud.goto((heart.left+heart.right)/2,(heart.up+heart.down)/2)
step+=1
if step == 1:
playSound("bone.wav")
for i in range(10):
bones.append(Player("bone2.png"))
bones[i].goto(-200*i,503)
for i in range(10,20):
bones.append(Player("bone2.png"))
bones[i].goto(200*i-1000,383)
bones[i].turn(180)
if step < 2200:
gb.move()
for i in range(10):
bones[i].move(1.2,0)
bones[i].put()
if coll(bones[i],jud):
hp-=0.5
playSound("hurtsound.wav")
for i in range(10,20):
bones[i].move(-1.2,0)
#bones[i].turn(2)
bones[i].put()
if coll(bones[i],jud):
hp-=0.5
playSound("hurtsound.wav")
elif step<2700:
gb.shoot()
else:
flag = False
ud()
GBs = list()
global ground
for i in range(100):
screen.fill((0, 0, 0))
#write("hp")
kuang.put()
xxk.put()
heart.put()
put_hp()
#Sans.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
Ink_Sans["head"].move(1,0)
Ink_Sans["body"].move(1,0)
Ink_Sans["leg"].move(1,0)
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and heart.y>kuang.y:heart.move(0,-0.5)
if keys[pygame.K_DOWN] and heart.y<kuang.y+200:heart.move(0,0.5)
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
ud()
Ink_Sans["head"].changeImage("head2.png")
say("hahaha,release the water.....")
say("Don't try to get closer, or you'll be baptized with fireworks")
ground = 0
xx = 1
key_flag = True
playMusic("bgm.mp3")
Ink_Sans["head"].changeImage("head3.png")
while True:
ground += 1
flag = True
cng = 0
kuang.goto(350,380)
while cng<35:
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
put_hp()
xxk.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
cng+=1
kuang.changeImage("kuang"+str(int(cng/5))+".png")
if cng%5==0:
kuang.move(-40,0)
ud()
write_text = "*The gaze of the abyss... ..."
write_cnt = 0
l = len(write_text)
while keys[pygame.K_z]:
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
if key_flag:
if xx==1:
xx=4
else:
xx-=1
playSound("click1.wav")
key_flag = False
elif keys[pygame.K_RIGHT]:
if key_flag:
if xx==4:
xx=1
else:
xx+=1
playSound("click1.wav")
key_flag = False
else:
key_flag = True
xxk.changeImage(str(xx)+".png")
xxk.mag(700,60)
heart.goto(140+(xx-1)*178,716)
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,255,255),max_len=40,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,255,255),max_len=40,si = 1.0)
ud()
while not keys[pygame.K_z]:
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
heart.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
if key_flag:
if xx==1:
xx=4
else:
xx-=1
playSound("click1.wav")
key_flag = False
elif keys[pygame.K_RIGHT]:
if key_flag:
if xx==4:
xx=1
else:
xx+=1
playSound("click1.wav")
key_flag = False
else:
key_flag = True
xxk.changeImage(str(xx)+".png")
xxk.mag(700,60)
heart.goto(140+(xx-1)*178,716)
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,255,255),max_len=40,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,255,255),max_len=40,si = 1.0)
ud()
playSound("click2.wav")
if xx==4:
write_text = "*Do you really want to do it?"
write_cnt = 0
l = len(write_text)
while keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,255,255),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,255,255),max_len=35,si = 1.0)
ud()
while not keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,255,255),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,255,255),max_len=35,si = 1.0)
ud()
write_text = "*Let go of your hypocritical kindness!"
write_cnt = 0
l = len(write_text)
while keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,0,0),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,0,0),max_len=35,si = 1.0)
ud()
while not keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,0,0),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,0,0),max_len=35,si = 1.0)
ud()
elif xx==1:
heart.goto(100,400)
while keys[pygame.K_z]:
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
heart.put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
write(" *Ink!Sans",pos=(100,400),color=(255,255,255),size=1)
keys = pygame.key.get_pressed()
ud()
while not keys[pygame.K_z]:
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
heart.put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
write(" *Ink!Sans",pos=(100,400),color=(255,255,255),size=1)
keys = pygame.key.get_pressed()
ud()
playSound("click2.wav")
fight_box.goto(300,400)
while cng<=60:
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
put_hp()
fight_box.put()
xxk.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
cng+=1
fight_box.changeImage("Fight_box"+str(12-int(cng/5))+".png")
fight_box.mag(50*int(cng/5),200)
if cng%5==0:
fight_box.move(-20,0)
ud()
fight.goto(100,400)
while keys[pygame.K_z] and fight.x<900:
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
put_hp()
fight_box.put()
fight.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
#heart.put()
fight.move(2,0)
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
ud()
while not keys[pygame.K_z] and fight.x<900:
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
put_hp()
fight_box.put()
fight.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
#heart.put()
fight.move(2,0)
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
ud()
cng = 25
playSound("swipe.wav")
for i in range(70):
screen.fill((0, 0, 0))
#write("hp")
kuang.put()
xxk.put()
fight_box.put()
fight.put()
fight.changeImage("fight"+str((i%35)&1)+".png",color_key=(1,0,0))
slice.changeImage("slice"+str(cng//25)+".png",color_key=(1,0,0))
fight.mag(20,200)
put_hp()
#Sans.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
slice.put()
draw_xt()
cnt += 1
cng += 1
Ink_Sans["head"].move(-3,0)
Ink_Sans["body"].move(-3,0)
Ink_Sans["leg"].move(-3,0)
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
ud()
for i in range(70):
screen.fill((0, 0, 0))
#write("hp")
kuang.put()
xxk.put()
put_hp()
fight_box.put()
slice.changeImage("slice"+str(cng//25)+".png",color_key=(1,0,0))
fight.put()
#Sans.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
slice.put()
fight.changeImage("fight"+str((i%35)&1)+".png",color_key=(1,0,0))
fight.mag(20,200)
cng+=1
cnt += 1
Ink_Sans["head"].move(3,0)
Ink_Sans["body"].move(3,0)
Ink_Sans["leg"].move(3,0)
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
ud()
elif xx==2:
heart.goto(100,400)
while keys[pygame.K_z]:
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
heart.put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
write(" check",pos=(100,400),color=(255,255,255),size=1)
keys = pygame.key.get_pressed()
ud()
while not keys[pygame.K_z]:
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
heart.put()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
write(" check",pos=(100,400),color=(255,255,255),size=1)
keys = pygame.key.get_pressed()
ud()
playSound("click2.wav")
write_text = "*Ink!Sans FIGHT ??? DEF ???"
write_cnt = 0
l = len(write_text)
while keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,255,255),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,255,255),max_len=35,si = 1.0)
ud()
while not keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,255,255),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,255,255),max_len=35,si = 1.0)
ud()
write_text = "*Continuing to attack, he had no way out"
write_cnt = 0
l = len(write_text)
while keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,0,0),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,0,0),max_len=35,si = 1.0)
ud()
while not keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,0,0),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,0,0),max_len=35,si = 1.0)
ud()
elif xx==3:
write_text = "*You're out of food anymore..."
write_cnt = 0
l = len(write_text)
while keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,255,255),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,255,255),max_len=35,si = 1.0)
ud()
while not keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,255,255),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,255,255),max_len=35,si = 1.0)
ud()
write_text = "*Didn't you bring it on yourself?!!!!!!!!!!!!"
write_cnt = 0
l = len(write_text)
while keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,0,0),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,0,0),max_len=35,si = 1.0)
ud()
while not keys[pygame.K_z]:
keys = pygame.key.get_pressed()
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
xxk.put()
put_hp()
#heart.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
if write_cnt<l*10:
if write_cnt%20==0:
playSound("write.wav")
Say(write_text[:int(write_cnt/10)],pos=(100,400),color=(255,0,0),max_len=35,si=1)
write_cnt+=1
else:
Say(write_text,pos=(100,400),color=(255,0,0),max_len=35,si = 1.0)
ud()
xxk.changeImage("0.png")
xxk.mag(700,60)
cng = 0
heart.goto(500,500)
while cng<35:
screen.fill((0, 0, 0))
#Sans.put()
kuang.put()
put_hp()
xxk.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt < 500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt > 500 and cnt < 1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt == 1000:
cnt = 0
cng+=1
kuang.changeImage("kuang"+str(7-int(cng/5))+".png")
if cng%5==0:
kuang.move(40,0)
ud()
if ground == 1:
say("You ruined all the other AUs, do you really think it's fun?!")
heart.changeImage("heart2.png")
elif ground == 2:
say("I ...... I really don't want to be like this...")
heart.changeImage("heart1.png")
else:
heart.changeImage("heart1.png")
flag = True
step=0
bones[:] = []
GBs[:] = []
Sans.goto(400,132)
for i in range(50):
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
put_hp()
heart.put()
#Sans.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
Ink_Sans["head"].move(-1,0)
Ink_Sans["body"].move(-1,0)
Ink_Sans["leg"].move(-1,0)
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and heart.y>kuang.y:heart.move(0,-0.5)
if keys[pygame.K_DOWN] and heart.y<kuang.y+200:heart.move(0,0.5)
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
ud()
for i in range(50):
screen.fill((0, 0, 0))
xxk.put()
kuang.put()
heart.put()
Sans.put()
put_hp()
Sans.move(1.5,0)
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
Ink_Sans["head"].move(-1,0)
Ink_Sans["body"].move(-1,0)
Ink_Sans["leg"].move(-1,0)
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and heart.y>kuang.y:heart.move(0,-0.5)
if keys[pygame.K_DOWN] and heart.y<kuang.y+200:heart.move(0,0.5)
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
ud()
while flag:
#hp = 5
screen.fill((0, 0, 0))
gb.put()
xxk.put()
kuang.put()
heart.put()
Sans.put()
put_hp()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
if ground == 1:
move_heart("blue")
else:
move_heart("red")
step+=1
if ground == 1:
if step == 1:
for i in range(25):
bones.append(Player("bone3.png"))
bones[i].goto(-100*i,580)
for i in range(25,50):
bones.append(Player("bone3.png"))
bones[i].goto(920+100*(i-25),580)
elif step < 5000:
for i in range(25):
bones[i].move(0.7,0)
bones[i].put()
if coll(bones[i],jud):
hp-=0.5
playSound("hurtsound.wav")
for i in range(25,50):
bones[i].move(-0.7,0)
bones[i].put()
if coll(bones[i],jud):
hp-=0.5
playSound("hurtsound.wav")
else:
flag = False
elif ground == 2:
if step == 1:
for i in range(10):
GBs.append(Gb())
GBs[i].set_target(700,i*100,90)
elif step < 600:
for i in range(10):
GBs[i].put()
GBs[i].move()
elif step < 1000:
for i in range(10):
GBs[i].shoot()
GBs[i].put()
else:
flag = False
else:
if step == 1:
for i in range(10):
GBs.append(Gb())
GBs[i].set_target(700,i*100,90)
elif step < 600:
for i in range(10):
GBs[i].put()
GBs[i].move()
elif step < 1000:
for i in range(10):
GBs[i].shoot()
GBs[i].put()
else:
flag = False
ud()
for i in range(100):
screen.fill((0, 0, 0))
#write("hp")
kuang.put()
xxk.put()
heart.put()
put_hp()
#Sans.put()
Ink_Sans["leg"].put()
Ink_Sans["body"].put()
Ink_Sans["head"].put()
draw_xt()
cnt += 1
Ink_Sans["head"].move(1,0)
Ink_Sans["body"].move(1,0)
Ink_Sans["leg"].move(1,0)
if cnt<500:
Ink_Sans["head"].move(0,cnt/(delta*1.5))
Ink_Sans["body"].move(0,cnt/(delta<<1))
elif cnt>500 and cnt<1000:
Ink_Sans["head"].move(0,-(cnt-500)/(delta*1.5))
Ink_Sans["body"].move(0,-(cnt-500)/(delta<<1))
elif cnt==1000:
cnt = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and heart.y>kuang.y:heart.move(0,-0.5)
if keys[pygame.K_DOWN] and heart.y<kuang.y+200:heart.move(0,0.5)
if keys[pygame.K_LEFT] and heart.x>kuang.x:heart.move(-0.5,0)
if keys[pygame.K_RIGHT] and heart.x<kuang.x+200:heart.move(0.5,0)
ud()
pygame.quit()
sys.exit()
彻底失去耐心,未完成……