基于Pierre Dellacherie算法实现俄罗斯方块的人工智能(python实现)《二》

本文介绍如何将俄罗斯方块从面向过程改进为面向对象,涉及Wall、Brick和HouseWorker三个核心类的设计,并实现了暂停、重新开始、结束动画等功能。通过Python实现游戏逻辑,探讨了gameover和dead参数的区别,并预告将加入人工智能功能。
摘要由CSDN通过智能技术生成

基于Pierre Dellacherie算法实现俄罗斯方块的人工智能(python实现)《二》

  • 本文章将会说明,把俄罗斯方块从面向过程到面向对象的改进,以及个性化功能的添加
  • 个性化功能包括:
    • 暂停
    • 重新开始
    • 结束动画
    • AD广告板
    • 显示下一个
  • 面对对象的设计我主要分为三个类:WallHouseWorker,和Brick
  • 下面一个一个类来说明

1. Wall类

  • 有些简单的功能我只提一提函数名,需要讲解的话请评论
class Wall():
    global GRID_NUM_WIDTH
    global LINE_COLOR
    global HEIGHT
    global HEIGHT

    def __init__(self):
        pass
    # 绘制背景格子
    def draw_grids(self):
        pass
    # 根据颜色矩阵绘制格子
    def draw_matrix(self):
        pass
    # 满行消除
    def remove_full_line(self):
        pass
    # 欢迎界面
    def show_welcome(self):
        pass
  • 展示文字,上一章说到这个函数我修改了,是因为我有时候也想显示文字的背景色

    def show_text(self, text, size, x, y, color=(0xff, 0xff, 0xff),bgColor = None):

        fontObj = pygame.font.Font('font/font.ttc', size)
        textSurfaceObj = fontObj.render(text, True, color,bgColor)
        textRectObj = textSurfaceObj.get_rect()
        textRectObj.center = (x, y)
        screen.blit(textSurfaceObj, textRectObj)
  • 写分
  • 新增了个性化功能:最高分,我用最简单的方法实现,直接把最高分写进一个txt文件,开始游戏的时候读取即可
    def draw_score(self):
        global heightScore
        self.show_text( u'得分 : {}'.format(score), 18, WIDTH + SIDE_WIDTH // 2, 180)

        if heightScore is None:
            self.getHeightScore()

        if score>heightScore:
            heightScore = score

        self.show_text( u'level : {}  最高分 : {}'.format(level,heightScore), 15, WIDTH + SIDE_WIDTH // 2, 205)

    # 暂停界面的显示
    def showPause(self):
        GREEN = ( 0, 255, 0)
        BLUE = ( 0, 0, 128)
        self.show_text(u'暂停中...', 50, 250, 200, BLUE , GREEN)
        pygame.display.update()
    # 因为文字描述(最高分,当前分,基本操作提示以及等级)多了,所以我干脆封装一个函数全部显示这些东西
    def drawAll(self):
        # 更新屏幕

        screen.fill(BLACK)
        self.draw_grids()
        self.draw_matrix()
        self.draw_score()
        self.drawNextBrick()

        self.show_text( u'再来一次:R',13, WIDTH+100,HEIGHT-140 , WHITE )
        self.show_text( u'我要暂停:P',13, WIDTH+100,HEIGHT-120 , WHITE )
        self.show_text( u'我要变形:↑',13, WIDTH+100,HEIGHT-100 , WHITE )
        self.show_text( u'左右移动: ← or →',13, WIDTH+100,HEIGHT-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值