circle loss代码实现_Pythonpygame实现简易I wanna!(3)

    本篇介绍游戏中各个对象的显示如何实现(仅显示模块)(主要也是想让大家熟悉熟悉blit和draw两个函数的使用)

    在介绍前先声明一下封面的女孩是《弹丸论破》中的七海千秋(七海小天使)


     在这里为了方便讲解,用类把这些都写了一遍,并进行了展示。     实现的有 kid,格子,刺er,传送门,save存档点,elf小精灵,每关名称 。 接下来就开始吧:

kid(Kid):

参数说明:color:颜色;pos:位置;size:尺寸;dead:是否死亡

用到的函数:(画圆)

pygame.draw.circle(screen, color, (x,y),radius,size)'''screen是要画在上面的那个屏幕color指这个圆的颜色(x,y)指圆心位置radius指圆的半径size指圆环的粗细,如果size为0则画一个内部填充的圆'''

代码

    def __init__(self,color,pos,size,dead):        self.screen=screen        self.color=color        self.pos=pos        self.size=size        self.dead=dead    def draw(self):        pygame.draw.circle(self.screen, self.color, (int(self.pos[0]), int(self.pos[1])),self.size, 1)        if self.dead:            pygame.draw.circle(self.screen, (255, 0, 255), (int(self.pos[0]), int(self.pos[1])), int(3 / 4 * self.size), 1)
格子(Ground): 参数说明:color:颜色;poses:一组位置(因为每关可能都有多个格子嘛);size:尺寸 用到的函数:(画矩形)
pygame.draw.rect(screen,color, (x, y,width,height), size)'''screen,color,size和上一个是一样的含义,就不再赘述了(x,y,weight,height):x,y指矩形的左上角顶点的位置;width,height分别表示矩形宽高'''

代码

class Ground():    def __init__(self,poses,color,size):        self.screen = screen        self.poses = poses        self.color = color        self.size = size    def draw(self):        for i in range(len(self.poses)):            pygame.draw.rect(self.screen,background_color, (self.poses[i][0], self.poses[i][1],self.size,self.size), 0)            pygame.draw.rect(self.screen,self.color, (self.poses[i][0], self.poses[i][1],self.size,self.size), 4)
刺er(Spine): 参数说明:poses:一组位置;size:尺寸 用到的函数:(画多边形)
pygame.draw.polygon(screen,color,[pos1,pos2,pos3,...])'''screen,color参见kid部分[pos1,pos2,pos3,...]是用来表示多边形的各个顶点(至少三个啦)pos1:一个表位置的数组:[x,y]'''

代码

class Spine():    def __init__(self, poses,size):        self.screen = screen        self.poses = poses        self.size=size    def draw(self):        e_g=self.size        for i in range(len(self.poses)):            pygame.draw.polygon(self.screen, (220, 223, 227), [(self.poses[i][0], self.poses[i][1] + e_g),                                                               (self.poses[i][0] + e_g, self.poses[i][1] + e_g),                                                               (self.poses[i][0] + e_g / 2, self.poses[i][1])])
传送门(Door): 参数说明:pos:位置;size:尺寸;state:用于标记kid是否进入传送门,若进入则由紫色变为黄色 用到的函数:(画圆,pygame.draw.circle(),参加kid部分) 代码
class Door():    def __init__(self, pos, state,size):        self.screen = screen        self.pos = pos        self.state = state        self.size=size    def draw(self):        e_g=self.size        if self.state == 0:            pygame.draw.circle(self.screen, (255, 0, 255), self.pos, int(3 / 2 * e_g), 4)        else:            pygame.draw.circle(self.screen, yellow, self.pos, int(3 / 2 * e_g), 4)
save存档点(Save): 参数说明:pos:位置 用到的函数:(显示文字)
 my_font1=pygame.font.SysFont("arial",18) word = my_font1.render("abcd", True, color,background=None) self.screen.blit(word, pos)'''my_font1(字体):"arial"字体的一种,可自行查询其他类型字体;18是字体大小word:    "abcd":文字内容,    True:方法中的第二个参数为抗锯齿,建议用True(所谓抗锯齿即,让图案边缘更加平滑,而不是呈现锯齿状,若没有很理解,则可以把True改为False看看效果)    color不赘述    background=None:这里是背景色,若不加这一参数,则默认背景为透明blit: pos: 文字第一个字左上角坐标'''

代码

class Save():    def __init__(self,pos):        self.screen=screen        self.pos=pos    def draw(self):        save_word1 = my_font1.render("sa", True, white)        save_word2 = my_font1.render("ve", True, white)        self.screen.blit(save_word1, [self.pos[0], self.pos[1]])        self.screen.blit(save_word2, [self.pos[0], self.pos[1]+5])
elf小精灵(Elf): 参数说明:pos:位置;color:颜色;size:尺寸 用到的函数:(画圆,pygame.draw.circle(),参加kid部分) 代码
class Elf():    def __init__(self,pos,color,size):        self.screen=screen        self.pos=pos        self.color=color        self.size=size    def draw(self):        pygame.draw.circle(self.screen, self.color, (int(self.pos[0]), int(self.pos[1])),self.size, 1)

每关名称(LvName)(lv: level):

参数说明:pos:位置;color:颜色;name:关卡名字

用到的函数:(文字,参加save存档点部分)

代码

class LvName():    def __init__(self,pos,color,name):        self.screen=screen        self.pos=pos        self.color=color        self.name=name    def draw(self):        words=my_font2.render(self.name, True, self.color)        self.screen.blit(words,self.pos)

在这里放上本次的全代码

import pygamefrom pygame import *from sys import exitgame_pygame.init()#pygame.mixer.init()screen_size=(900,600)screen=pygame.display.set_mode(screen_size,0,32)pygame.display.set_caption(game_title)my_font1=pygame.font.SysFont("arial",18)my_font2=pygame.font.SysFont("arial",30)white=(255,255,255)yellow=(255,255,0)purple=(255,0,255)background_color=(0,0,0)#black#pygame.mixer.music.load("./music/Nyan Cat.mp3")#pygame.mixer.music.play(-1)class Kid():    def __init__(self,color,pos,size,dead):        self.screen=screen        self.color=color        self.pos=pos        self.size=size        self.dead=dead    def draw(self):        pygame.draw.circle(self.screen, self.color, (int(self.pos[0]), int(self.pos[1])),self.size, 1)        if self.dead:            pygame.draw.circle(self.screen, (255, 0, 255), (int(self.pos[0]), int(self.pos[1])), int(3 / 4 * self.size), 1)class Ground():    def __init__(self,poses,color,size):        self.screen = screen        self.poses = poses        self.color = color        self.size = size    def draw(self):        for i in range(len(self.poses)):            pygame.draw.rect(self.screen,background_color, (self.poses[i][0], self.poses[i][1],self.size,self.size), 0)            pygame.draw.rect(self.screen,self.color, (self.poses[i][0], self.poses[i][1],self.size,self.size), 4)class Spine():    def __init__(self, poses,size):        self.screen = screen        self.poses = poses        self.size=size    def draw(self):        e_g=self.size        for i in range(len(self.poses)):            pygame.draw.polygon(self.screen, (220, 223, 227), [(self.poses[i][0], self.poses[i][1] + e_g),                                                               (self.poses[i][0] + e_g, self.poses[i][1] + e_g),                                                               (self.poses[i][0] + e_g / 2, self.poses[i][1])])class Door():    def __init__(self, pos, state,size):        self.screen = screen        self.pos = pos        self.state = state        self.size=size    def draw(self):        e_g=self.size        if self.state == 0:            pygame.draw.circle(self.screen, (255, 0, 255), self.pos, int(3 / 2 * e_g), 4)        else:            pygame.draw.circle(self.screen, yellow, self.pos, int(3 / 2 * e_g), 4)class Save():    def __init__(self,pos):        self.screen=screen        self.pos=pos    def draw(self):        save_word1 = my_font1.render("sa", True, white)        save_word2 = my_font1.render("ve", True, white)        self.screen.blit(save_word1, [self.pos[0], self.pos[1]])        self.screen.blit(save_word2, [self.pos[0], self.pos[1]+5])class Elf():    def __init__(self,pos,color,size):        self.screen=screen        self.pos=pos        self.color=color        self.size=size    def draw(self):        pygame.draw.circle(self.screen, self.color, (int(self.pos[0]), int(self.pos[1])),self.size, 1)class LvName():    def __init__(self,pos,color,name):        self.screen=screen        self.pos=pos        self.color=color        self.name=name    def draw(self):        words=my_font2.render(self.name, True, self.color)        self.screen.blit(words,self.pos)kid=Kid(white,[300,200],10,0)ground_pos=[[100,500],[130,500],[160,500],[190,500],[220,500],[250,500],            [280,500],[310,500],[340,470],[370,440],[400,410],[400,380],            [430,350],[430,320],[370,260],[340,260],[280,200],[250,200],            [280,140],[310,140],[340,140],[370,140],[400,140],[430,140],            [460,140],[490,140],[520,140],[550,140],[580,140],[610,140],[640,140],[670,140]]ground=Ground(ground_pos,white,10)spine_pos=[[370,110],[270,110]]spine=Spine(spine_pos,10)door=Door([700,110],0,10)save=Save([115,485])elf=Elf([100,100],yellow,3)lv_names=["O The Fool","I The Magician"]lv_name=LvName([10,0],white,lv_names[0])while True:    for event in pygame.event.get():        if event.type == QUIT:            exit()    screen.fill((0, 0, 0))    kid.draw()    ground.draw()    spine.draw()    door.draw()    save.draw()    elf.draw()    lv_name.draw()    pygame.display.update()
    ---运行之后是这样子的---

68b230834b2bdc7acfec98cd43643b41.png

唉,和预想效果不太一样

(什么不太一样,差很多才对吧!喂!)

(╯>д

但是主要是各个对象的大小没有写好,

改一下参数(大小,位置)就可以啦!

那么这个工作就交给你们来熟悉熟悉吧!

(不要给自己懒找借口啊喂!)

(╯>д

第四篇会来讲一讲如何实现kid与周围其他物体实现互动的(格子,刺er,传送门等)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值