国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python畢設(shè)分享 打磚塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

這篇具有很好參考價(jià)值的文章主要介紹了python畢設(shè)分享 打磚塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


1 項(xiàng)目簡介

?? Hi,各位同學(xué)好呀,這里是L學(xué)長!

??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品

python小游戲畢設(shè) 打磚塊小游戲設(shè)計(jì)與實(shí)現(xiàn)

?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分)

  • 難度系數(shù):3分

  • 工作量:3分

  • 創(chuàng)新點(diǎn):3分

  • 項(xiàng)目獲?。?/strong>https://gitee.com/sinonfin/system-sharing


1 游戲介紹

利用python制作的一個(gè)打磚塊小游戲。

游戲規(guī)則:

打磚塊是一種電子游戲。屏幕上部有若干層磚塊,一個(gè)球在屏幕上方的磚塊和墻壁、屏幕下方的移動(dòng)短板和兩側(cè)墻壁之間來回彈,當(dāng)球碰到磚塊時(shí),球會(huì)反彈,而磚塊會(huì)消失。玩家要控制螢?zāi)幌路降陌遄?,讓“球”通過撞擊消去所有的“磚塊”,球碰到螢?zāi)坏走吘蜁?huì)消失,所有的球消失則游戲失敗。把磚塊全部消去就可以破關(guān)。

板子操作方式:按“→”向右,按“←”向左。

2 實(shí)現(xiàn)效果

python畢設(shè)分享 打磚塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼),python
python畢設(shè)分享 打磚塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼),python

3 開發(fā)工具

3.1 環(huán)境配置

  • Python版本:3.6.4

  • 相關(guān)模塊:

  • pygame模塊;

  • 以及一些Python自帶的模塊。

3.2 Pygame介紹

簡介

Pygame是一系列專門為編寫電子游戲而設(shè)計(jì)的Python模塊(modules)。Pygame在已經(jīng)非常優(yōu)秀的SDL庫的基礎(chǔ)上增加了許多功能。這讓你能夠用Python語言編寫出豐富多彩的游戲程序。

Pygame可移植性高,幾乎能在任何平臺(tái)和操作系統(tǒng)上運(yùn)行。

Pygame已經(jīng)被下載過數(shù)百萬次。

Pygame免費(fèi)開源。它在LGPL許可證(Lesser General Public License,GNU寬通用公共許可證)下發(fā)行。使用Pygame,你可以創(chuàng)造出免費(fèi)開源,可共享,或者商業(yè)化的游戲。詳情請(qǐng)見LGPL許可證。

優(yōu)點(diǎn)

  • 能夠輕松使用多核CPU(multi core CPUs) :如今雙核CPU很常用,8核CPU在桌面系統(tǒng)中也很便宜,而利用好多核系統(tǒng),能讓你在你的游戲中實(shí)現(xiàn)更多東西。特定的pygame函數(shù)能夠釋放令人生畏的python GIL(全局解釋器鎖),這幾乎是你用C語言才能做的事。

  • 核心函數(shù)用最優(yōu)化的C語言或匯編語言編寫:C語言代碼通常比Python代碼運(yùn)行速度快10-20倍。而匯編語言編寫的代碼(assembly code)比Python甚至快到100多倍。

  • 安裝便捷:一般僅需包管理程序或二進(jìn)制系統(tǒng)程序便能安裝。

  • 真正地可移植:支持Linux (主要發(fā)行版), Windows (95, 98, ME, 2000, XP, Vista, 64-bit Windows,), Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX等操作系統(tǒng).也能支持AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS and OS/2,但是還沒有受到官方認(rèn)可。你也可以在手持設(shè)備,游戲控制臺(tái), One Laptop Per Child (OLPC) computer項(xiàng)目的電腦等設(shè)備中使用pygame.

  • 用法簡單:無論是小孩子還是大人都能學(xué)會(huì)用pygame來制作射擊類游戲。

  • 很多Pygame游戲已發(fā)行:其中包括很多游戲大賽入圍作品、非常受歡迎的開源可分享的游戲。

  • 由你來控制主循環(huán):由你來調(diào)用pygame的函數(shù),pygame的函數(shù)并不需要調(diào)用你的函數(shù)。當(dāng)你同時(shí)還在使用其他庫來編寫各種各種的程序時(shí),這能夠?yàn)槟闾峁O大的掌控權(quán)。

  • 不需要GUI就能使用所有函數(shù):僅在命令行中,你就可以使用pygame的某些函數(shù)來處理圖片,獲取游戲桿輸入,播放音樂……

  • 對(duì)bug反應(yīng)迅速:很多bug在被上報(bào)的1小時(shí)內(nèi)就能被我們修復(fù)。雖然有時(shí)候我們確實(shí)會(huì)卡在某一個(gè)bug上很久,但大多數(shù)時(shí)候我們都是很不錯(cuò)的bug修復(fù)者。如今bug的上報(bào)已經(jīng)很少了,因?yàn)樵S多bug早已被我們修復(fù)。

  • 代碼量少:pygame并沒有數(shù)以萬計(jì)的也許你永遠(yuǎn)用不到的冗雜代碼。pygame的核心代碼一直保持著簡潔特點(diǎn),其他附加物諸如GUI庫等,都是在核心代碼之外單獨(dú)設(shè)計(jì)研發(fā)的。

  • 模塊化:你可以單獨(dú)使用pygame的某個(gè)模塊。想要換著使用一個(gè)別的聲音處理庫?沒問題。pygame的很多核心模塊支持獨(dú)立初始化與使用。

最小開發(fā)框架

import pygame,sys #sys是python的標(biāo)準(zhǔn)庫,提供Python運(yùn)行時(shí)環(huán)境變量的操控

pygame.init()  #內(nèi)部各功能模塊進(jìn)行初始化創(chuàng)建及變量設(shè)置,默認(rèn)調(diào)用
size = width,height = 800,600  #設(shè)置游戲窗口大小,分別是寬度和高度
screen = pygame.display.set_mode(size)  #初始化顯示窗口
pygame.display.set_caption("小游戲程序")  #設(shè)置顯示窗口的標(biāo)題內(nèi)容,是一個(gè)字符串類型
while True:  #無限循環(huán),直到Python運(yùn)行時(shí)退出結(jié)束
    for event in pygame.event.get():  #從Pygame的事件隊(duì)列中取出事件,并從隊(duì)列中刪除該事件
        if event.type == pygame.QUIT:  #獲得事件類型,并逐類響應(yīng)
            sys.exit()   #用于退出結(jié)束游戲并退出          
    pygame.display.update()  #對(duì)顯示窗口進(jìn)行更新,默認(rèn)窗口全部重繪

代碼執(zhí)行流程

python畢設(shè)分享 打磚塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼),python

4 具體實(shí)現(xiàn)

4.1 實(shí)現(xiàn)游戲精靈類

游戲?qū)崿F(xiàn)起來其實(shí)非常簡單。首先,我們根據(jù)游戲規(guī)則定義3個(gè)游戲精靈類,分別是:

  • 板子類;
  • 球類;
  • 磚塊類。

先定義游戲精靈的好處是方便后續(xù)游戲精靈類之間的碰撞檢測以及游戲精靈的操作管理等。具體而言,對(duì)于板子類,其應(yīng)當(dāng)具有根據(jù)玩家操作而移動(dòng)等功能,其代碼實(shí)現(xiàn)如下:

'''板子'''
class Paddle(pygame.sprite.Sprite):
    def __init__(self, x, y, width, height, SCREENWIDTH, SCREENHEIGHT, **kwargs):
        pygame.sprite.Sprite.__init__(self)
        self.init_state = [x, y, width, height]
        self.rect = pygame.Rect(x, y, width, height)
        self.base_speed = 10
        self.SCREENWIDTH = SCREENWIDTH
        self.SCREENHEIGHT = SCREENHEIGHT
    '''移動(dòng)板子'''
    def move(self, direction):
        if direction == 'left':
            self.rect.left = max(0, self.rect.left-self.base_speed)
        elif direction == 'right':
            self.rect.right = min(self.SCREENWIDTH, self.rect.right+self.base_speed)
        else:
            raise ValueError('Paddle.move.direction unsupport <%s>...' % direction)
        return True
    '''綁定到屏幕上'''
    def draw(self, screen, color):
        pygame.draw.rect(screen, color, self.rect)
        return True
    '''重置'''
    def reset(self):
        self.rect = pygame.Rect(self.init_state[0], self.init_state[1], self.init_state[2], self.init_state[3])
        return True

對(duì)于球類,則由電腦控制其移動(dòng)方式(比如撞到墻自動(dòng)換方向等),其代碼實(shí)現(xiàn)如下:

'''球'''
class Ball(pygame.sprite.Sprite):
    def __init__(self, x, y, radius, SCREENWIDTH, SCREENHEIGHT, **kwargs):
        pygame.sprite.Sprite.__init__(self)
        self.init_state = [x, y, radius*2, radius*2]
        self.rect = pygame.Rect(x, y, radius*2, radius*2)
        self.base_speed = [5, 5]
        self.direction = [random.choice([1, -1]), -1]
        self.radius = radius
        self.SCREENWIDTH = SCREENWIDTH
        self.SCREENHEIGHT = SCREENHEIGHT
    '''移動(dòng)球'''
    def move(self):
        self.rect.left += self.direction[0] * self.base_speed[0]
        self.rect.top += self.direction[1] * self.base_speed[1]
        if self.rect.left <= 0:
            self.rect.left = 0
            self.direction[0] = -self.direction[0]
        elif self.rect.right >= self.SCREENWIDTH:
            self.rect.right = self.SCREENWIDTH
            self.direction[0] = -self.direction[0]
        if self.rect.top <= 0:
            self.rect.top = 0
            self.direction[1] = -self.direction[1]
        elif self.rect.bottom >= self.SCREENHEIGHT:
            return False
        return True
    '''改變運(yùn)動(dòng)速度和方向(與拍相撞時(shí))'''
    def change(self):
        self.base_speed = [random.choice([4, 5, 6]), random.choice([4, 5, 6])]
        self.direction = [random.choice([1, -1]), -1]
        return True
    '''綁定到屏幕上'''
    def draw(self, screen, color):
        pygame.draw.circle(screen, color, (self.rect.left+self.radius, self.rect.top+self.radius), self.radius)
        return True
    '''重置'''
    def reset(self):
        self.rect = pygame.Rect(self.init_state[0], self.init_state[1], self.init_state[2], self.init_state[3])
        return True

對(duì)于磚塊類,則比較簡單,其代碼實(shí)現(xiàn)如下:

'''磚塊'''
class Brick(pygame.sprite.Sprite):
    def __init__(self, x, y, width, height, **kwargs):
        pygame.sprite.Sprite.__init__(self)
        self.init_state = [x, y, width, height]
        self.rect = pygame.Rect(x, y, width, height)
    '''綁定到屏幕上'''
    def draw(self, screen, color):
        pygame.draw.rect(screen, color, self.rect)
        return True
    '''重置'''
    def reset(self):
        self.rect = pygame.Rect(self.init_state[0], self.init_state[1], self.init_state[2], self.init_state[3])
        return True

然后和以前一樣,多弄幾個(gè)關(guān)卡,每個(gè)關(guān)卡地圖都用一個(gè).level文件來設(shè)計(jì)定義,例如這樣:
python畢設(shè)分享 打磚塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼),python
其中B代表磚塊所在的位置。

4.2 實(shí)現(xiàn)游戲主循環(huán)

OK,接下來可以考慮實(shí)現(xiàn)游戲主循環(huán)了。基本的邏輯就是:
python畢設(shè)分享 打磚塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼),python
即每關(guān)結(jié)束判斷一下是過關(guān)了還是GG了,過關(guān)了就進(jìn)入下一關(guān),否則就直接進(jìn)入結(jié)束界面。當(dāng)然最后一關(guān)是個(gè)例外,因?yàn)榻Y(jié)束之后肯定要進(jìn)入結(jié)束界面。具體而言,主邏輯代碼實(shí)現(xiàn)如下:

def run(self):
    while True:
        self.__startInterface()
        for idx, levelpath in enumerate(self.cfg.LEVELPATHS):
            state = self.__runLevel(levelpath)
            if idx == len(self.cfg.LEVELPATHS)-1:
                break
            if state == 'win':
                self.__nextLevel()
            else:
                break
        if state == 'fail':
            self.__endInterface(False)
        else:
            self.__endInterface(True)

5 最后

項(xiàng)目獲?。?/strong>https://gitee.com/sinonfin/system-sharing文章來源地址http://www.zghlxwxcb.cn/news/detail-774827.html

到了這里,關(guān)于python畢設(shè)分享 打磚塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python畢設(shè)分享 走迷宮小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python畢設(shè)分享 走迷宮小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 走迷宮小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 項(xiàng)目獲?。?htt

    2024年01月21日
    瀏覽(28)
  • python畢設(shè)分享 消消樂小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python畢設(shè)分享 消消樂小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 消消樂小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 項(xiàng)目獲?。?htt

    2024年02月04日
    瀏覽(23)
  • python畢設(shè)分享 記憶翻牌小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python畢設(shè)分享 記憶翻牌小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 記憶翻牌小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):3分 項(xiàng)目獲?。?/p>

    2024年02月03日
    瀏覽(23)
  • python畢設(shè)分享 俄羅斯方塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python畢設(shè)分享 俄羅斯方塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 俄羅斯方塊小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 項(xiàng)目獲?。?/p>

    2024年02月03日
    瀏覽(25)
  • python畢設(shè)分享 外星人入侵小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python畢設(shè)分享 外星人入侵小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 外星人入侵小游戲設(shè)計(jì)與實(shí)現(xiàn) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 項(xiàng)目獲?。?https://gitee.com/sinonfin/s

    2024年02月05日
    瀏覽(27)
  • python畢設(shè)分享 仿谷歌瀏覽器小恐龍小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python畢設(shè)分享 仿谷歌瀏覽器小恐龍小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 仿谷歌瀏覽器小恐龍小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 項(xiàng)

    2024年02月03日
    瀏覽(30)
  • python小游戲畢設(shè) 掃雷小游戲設(shè)計(jì)與實(shí)現(xiàn)

    python小游戲畢設(shè) 掃雷小游戲設(shè)計(jì)與實(shí)現(xiàn)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 掃雷小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 《掃雷》是一款大

    2024年02月04日
    瀏覽(92)
  • python小游戲畢設(shè) 2048小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python小游戲畢設(shè) 2048小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 2048小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 項(xiàng)目獲?。?https://

    2024年02月12日
    瀏覽(29)
  • python小游戲畢設(shè) 掃雷小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python小游戲畢設(shè) 掃雷小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 掃雷小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長根據(jù)實(shí)現(xiàn)的難度和等級(jí)對(duì)項(xiàng)目進(jìn)行評(píng)分(最低0分,滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點(diǎn):4分 項(xiàng)目獲?。?https:

    2024年02月06日
    瀏覽(34)
  • 【python小游戲畢設(shè)】吃豆人小游戲設(shè)計(jì)與實(shí)現(xiàn)

    【python小游戲畢設(shè)】吃豆人小游戲設(shè)計(jì)與實(shí)現(xiàn)

    ?? 這兩年開始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天

    2024年02月15日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包