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

使用python的pygame做一個(gè)簡(jiǎn)易的坦克大戰(zhàn)

這篇具有很好參考價(jià)值的文章主要介紹了使用python的pygame做一個(gè)簡(jiǎn)易的坦克大戰(zhàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

以下代碼單純是個(gè)簡(jiǎn)易的沒(méi)有完全完成的代碼,主坦克單純只能進(jìn)行移動(dòng)的操作,其他攻擊類以及敵方坦克的移動(dòng)攻擊均未設(shè)置。

(精靈圖可以到bilibili或者網(wǎng)上找精靈圖,只需要改一下以下代碼的文件位置就行)

import pygame.display

import pygame, time, random

SCREEN_WIDTH = 1000

SCREEN_HEIGHT = 800

COLRE = pygame.Color(0, 0, 0)

TEXT_COLOR = pygame.Color(255, 0, 0)

# 導(dǎo)入模塊

class Maingame():

? ? window = None

? ? my_tank = None

? ? # 創(chuàng)建存儲(chǔ)敵方坦克的列表

? ? enemytanklist = []

? ? enemytankcount = 5

?

? ? def __init__(self):

? ? ? ? pass

?

? ? def startgame(self):

? ? ? ? # 加載一個(gè)主窗口

? ? ? ? pygame.display.init() # 初始化窗口

? ? ? ? # 設(shè)置窗口的大小及其顯示

? ? ? ? Maingame.window = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])

? ? ? ? # 初始化坦克的位置

? ? ? ? Maingame.my_tank = Tanke(350, 250)

? ? ? ? # 初始化敵方的坦克,并且添加到列表當(dāng)中

? ? ? ? self.createenemy()

? ? ? ? # 對(duì)標(biāo)題方面進(jìn)行設(shè)置

? ? ? ? pygame.display.set_caption('坦克大作戰(zhàn)')

? ? ? ? while True:

? ? ? ? ? ? # 使用time模塊的時(shí)侯讓坦克速度慢一些

? ? ? ? ? ? time.sleep(0.001)

? ? ? ? ? ? # 給窗口設(shè)置填充的顏色

? ? ? ? ? ? Maingame.window.fill(COLRE)

? ? ? ? ? ? self.getevent()

? ? ? ? ? ? # 繪制文字

? ? ? ? ? ? Maingame.window.blit(self.getText('敵方坦克剩余的數(shù)量%d' % 6), (10, 10))

? ? ? ? ? ? # 調(diào)用坦克的顯示方法

? ? ? ? ? ? Maingame.my_tank.displayTake()

? ? ? ? ? ? #循環(huán)遍歷敵方的坦克的列表,展示敵方的坦克

? ? ? ? ? ? self.blitenemytake()

? ? ? ? ? ? # 調(diào)用移動(dòng)的方法

? ? ? ? ? ? # 如果坦克的開關(guān)是開啟,才可以移動(dòng)

? ? ? ? ? ? if not Maingame.my_tank.stop:

? ? ? ? ? ? ? ? Maingame.my_tank.move()

? ? ? ? ? ? pygame.display.update()

?

? ? def createenemy(self):

? ? ? ? top = 100

? ? ? ? # 循環(huán)生成敵方的坦克

? ? ? ? for i in range(Maingame.enemytankcount):

? ? ? ? ? ? left = random.randint(0, 600)

? ? ? ? ? ? speed = random.randint(1, 4)

? ? ? ? ? ? enemy = EnemyTanke(left, top, speed)

? ? ? ? ? ? Maingame.enemytanklist.append(enemy)

? ? def blitenemytake(self):

? ? ? ? for enemytake in Maingame.enemytanklist:

? ? ? ? ? ? enemytake.displayTake()

?

? ? def endgame(self):

? ? ? ? print('謝謝使,歡迎再一次進(jìn)行使用')

? ? ? ? exit()

?

? ? # 對(duì)左上角的文字進(jìn)行繪制

? ? def getText(self, text):

? ? ? ? # 設(shè)置初始化字體的模塊

? ? ? ? pygame.font.init()

? ? ? ? # 獲取字體FONT對(duì)象

? ? ? ? font = pygame.font.SysFont('kaiti', 18)

? ? ? ? # 繪制文字的信息

? ? ? ? textSurface = font.render(text, True, TEXT_COLOR)

? ? ? ? return textSurface

?

? ? # 獲取時(shí)間

? ? def getevent(self):

? ? ? ? eventlist = pygame.event.get()

? ? ? ? for event in eventlist:

? ? ? ? ? ? # 判斷按下的鍵位是關(guān)閉還是鍵盤按下

? ? ? ? ? ? # 代表的意思是如果按下的鍵位是退出那么就關(guān)閉窗口

? ? ? ? ? ? if event.type == pygame.QUIT:

? ? ? ? ? ? ? ? self.endgame()

? ? ? ? ? ? # 如果是鍵盤的按下鍵位

? ? ? ? ? ? if event.type == pygame.KEYDOWN:

? ? ? ? ? ? ? ? # 用來(lái)判斷是否是上下左右

? ? ? ? ? ? ? ? # 判斷按下的是上下左右鍵位

? ? ? ? ? ? ? ? if event.key == pygame.K_LEFT:

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.direction = 'L'

? ? ? ? ? ? ? ? ? ? # 修改坦克的開關(guān)狀態(tài)

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.stop = False

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.move()

? ? ? ? ? ? ? ? ? ? print('按下左鍵,坦克向左方向進(jìn)行移動(dòng)')

? ? ? ? ? ? ? ? elif event.key == pygame.K_RIGHT:

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.direction = 'R'

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.stop = False

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.move()

? ? ? ? ? ? ? ? ? ? print('按下右鍵,坦克向右移動(dòng)')

? ? ? ? ? ? ? ? elif event.key == pygame.K_UP:

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.direction = 'U'

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.stop = False

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.move()

? ? ? ? ? ? ? ? ? ? print('按下上鍵,坦克向上移動(dòng)')

? ? ? ? ? ? ? ? elif event.key == pygame.K_DOWN:

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.direction = 'D'

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.stop = False

? ? ? ? ? ? ? ? ? ? Maingame.my_tank.move()

? ? ? ? ? ? ? ? ? ? print('按下下鍵,坦克向下移動(dòng)')

? ? ? ? ? ? ? ? elif event.key == pygame.K_SPACE:

? ? ? ? ? ? ? ? ? ? print('發(fā)射子彈')

? ? ? ? ? ? ? ? # 松開方向鍵的時(shí)侯停止坦克的移動(dòng),修改坦克的開關(guān)狀態(tài)

? ? ? ? ? ? if event.type == pygame.KEYUP:

? ? ? ? ? ? ? ? Maingame.my_tank.stop = True

?

?

class Tanke():

? ? # 添加距離左邊left距離上邊top

? ? def __init__(self, left, top):

? ? ? ? self.images = {

? ? ? ? ? ? 'U': pygame.image.load('坦克2/p1tankU.gif'),

? ? ? ? ? ? 'D': pygame.image.load('坦克2/p1tankD.gif'),

? ? ? ? ? ? 'L': pygame.image.load('坦克2/p1tankL.gif'),

? ? ? ? ? ? 'R': pygame.image.load('坦克2/p1tankR.gif'),

? ? ? ? }

? ? ? ? # 加載方向

? ? ? ? self.direction = 'U'

? ? ? ? # 根據(jù)當(dāng)前的圖片的方向獲取圖片 surface

? ? ? ? self.image = self.images[self.direction]

? ? ? ? # 獲取區(qū)域根據(jù)圖片

? ? ? ? self.rect = self.image.get_rect()

? ? ? ? # 設(shè)置區(qū)域的left 和 top

? ? ? ? self.rect.left = left

? ? ? ? self.rect.top = top

? ? ? ? # 調(diào)整速度,決定移動(dòng)速度的快慢

? ? ? ? self.speed = 1

? ? ? ? # 坦克移動(dòng)的開關(guān)

? ? ? ? self.stop = True

?

? ? def move(self):

? ? ? ? # 判斷坦克的方向進(jìn)行移動(dòng)

? ? ? ? if self.direction == 'L':

? ? ? ? ? ? if self.rect.left > 0:

? ? ? ? ? ? ? ? self.rect.left -= self.speed

? ? ? ? elif self.direction == 'U':

? ? ? ? ? ? if self.rect.top > 0:

? ? ? ? ? ? ? ? self.rect.top -= self.speed

? ? ? ? elif self.direction == 'D':

? ? ? ? ? ? if self.rect.top + self.rect.height < SCREEN_HEIGHT:

? ? ? ? ? ? ? ? self.rect.top += self.speed

? ? ? ? elif self.direction == 'R':

? ? ? ? ? ? if self.rect.top + self.rect.height < SCREEN_WIDTH:

? ? ? ? ? ? ? ? self.rect.left += self.speed

?

? ? def shot(self):

? ? ? ? pass

?

? ? # 展示坦克的方法

?

? ? def displayTake(self):

? ? ? ? # 獲取展示的對(duì)象

? ? ? ? self.image = self.images[self.direction]

? ? ? ? # 調(diào)用blit方法

? ? ? ? Maingame.window.blit(self.image, self.rect)

?

?

# 我方的坦克

class MyTanke(Tanke):

? ? def __init__(self):

? ? ? ? pass

?

?

# 敵方的坦克

class EnemyTanke(Tanke):

? ? def __init__(self, left, top, speed):

? ? ? ? # 坦克是需要加載圖片的

? ? ? ? self.images = {

? ? ? ? ? ? 'U': pygame.image.load('坦克2/enemy1U.gif'),

? ? ? ? ? ? 'D': pygame.image.load('坦克2/enemy1D.gif'),

? ? ? ? ? ? 'L': pygame.image.load('坦克2/enemy1L.gif'),

? ? ? ? ? ? 'R': pygame.image.load('坦克2/enemy1R.gif'),

? ? ? ? }

? ? ? ? # 需要定義一個(gè)方向

? ? ? ? self.direction = self.randDirection()

? ? ? ? # 根據(jù)方向獲取image獲取當(dāng)前的圖片

? ? ? ? self.image = self.images[self.direction]

? ? ? ? # 區(qū)域

? ? ? ? self.rect = self.image.get_rect()

? ? ? ? # 對(duì)left以及top進(jìn)行賦值

? ? ? ? self.rect.left = left

? ? ? ? self.rect.top = top

? ? ? ? # 速度

? ? ? ? self.speed = speed

? ? ? ? # 移動(dòng)開關(guān)

? ? ? ? self.flag = True

?

? ? def randDirection(self):

? ? ? ? num = random.randint(1, 4)

? ? ? ? if num == 1:

? ? ? ? ? ? return 'U'

? ? ? ? elif num == 2:

? ? ? ? ? ? return 'D'

? ? ? ? elif num == 3:

? ? ? ? ? ? return 'L'

? ? ? ? elif num == 4:

? ? ? ? ? ? return 'R'

?

?

class Bullet():

? ? def __init__(self):

? ? ? ? pass

?

? ? def move(self):

? ? ? ? pass

?

? ? def displayBullet(self):

? ? ? ? pass

?

?

class Wall():

? ? def __init__(self):

? ? ? ? pass

?

? ? def displayWall(self):

? ? ? ? pass

?

?

class Explode():

? ? def __init__(self):

? ? ? ? pass

?

? ? def displayExplore(self):

? ? ? ? pass

?

?

class Music():

? ? def __init__(self):

? ? ? ? pass

?

? ? # 播放音樂(lè)

? ? def play(self):

? ? ? ? pass

?

?

if __name__ == '__main__':

? ? Maingame().startgame()文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-849411.html

到了這里,關(guān)于使用python的pygame做一個(gè)簡(jiǎn)易的坦克大戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(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坦克大戰(zhàn)完整版

    Python坦克大戰(zhàn)完整版

    圖片和音效自己自行在網(wǎng)上下載即可。 ? ?

    2024年02月04日
    瀏覽(19)
  • Python實(shí)現(xiàn)【坦克大戰(zhàn)】+源碼分享

    Python實(shí)現(xiàn)【坦克大戰(zhàn)】+源碼分享

    坦克大戰(zhàn),這款經(jīng)典的電子游戲,無(wú)疑是許多80后和90后心中不可磨滅的童年記憶。它不僅僅是一款游戲,更是那個(gè)時(shí)代科技娛樂(lè)方式的縮影,見證了電子游戲行業(yè)的起步與發(fā)展。 在那個(gè)電腦和網(wǎng)絡(luò)尚未完全普及的年代,坦克大戰(zhàn)以其簡(jiǎn)單的規(guī)則、豐富的關(guān)卡設(shè)計(jì)和緊張刺激

    2024年04月10日
    瀏覽(24)
  • python項(xiàng)目分享 - python坦克大戰(zhàn)小游戲

    python項(xiàng)目分享 - python坦克大戰(zhàn)小游戲

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長(zhǎng)! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長(zhǎng)根據(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日
    瀏覽(26)
  • 畢業(yè)設(shè)計(jì) python坦克大戰(zhàn)小游戲

    畢業(yè)設(shè)計(jì) python坦克大戰(zhàn)小游戲

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長(zhǎng)! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長(zhǎng)根據(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月21日
    瀏覽(28)
  • python畢設(shè)分享 python坦克大戰(zhàn)小游戲

    python畢設(shè)分享 python坦克大戰(zhàn)小游戲

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長(zhǎng)! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長(zhǎng)根據(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日
    瀏覽(33)
  • python小游戲畢設(shè) 坦克大戰(zhàn)游戲設(shè)計(jì)與實(shí)現(xiàn)

    python小游戲畢設(shè) 坦克大戰(zhàn)游戲設(shè)計(jì)與實(shí)現(xiàn)

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

    2024年02月05日
    瀏覽(26)
  • python項(xiàng)目分享 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python項(xiàng)目分享 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長(zhǎng)! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長(zhǎng)根據(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年01月25日
    瀏覽(32)
  • python項(xiàng)目分享 - 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python項(xiàng)目分享 - 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長(zhǎng)! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長(zhǎng)根據(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月01日
    瀏覽(31)
  • 【Python實(shí)現(xiàn)坦克大戰(zhàn),帶你找回童年的快樂(lè)】附源碼

    【Python實(shí)現(xiàn)坦克大戰(zhàn),帶你找回童年的快樂(lè)】附源碼

    坦克大戰(zhàn)90版本是一款2D射擊游戲,玩家扮演一輛坦克,通過(guò)操縱坦克進(jìn)行戰(zhàn)斗。游戲場(chǎng)景通常是由迷宮狀的地圖構(gòu)成,在地圖中有各種不同類型的障礙物,如墻壁、水域、草地等,這些障礙物會(huì)對(duì)玩家的行動(dòng)和戰(zhàn)斗產(chǎn)生影響。 玩家的目標(biāo)是摧毀敵方坦克并保護(hù)自己的基地。

    2024年02月08日
    瀏覽(22)
  • python畢設(shè)分享 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    python畢設(shè)分享 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼)

    ?? Hi,各位同學(xué)好呀,這里是L學(xué)長(zhǎng)! ??今天向大家分享一個(gè)今年(2022)最新完成的畢業(yè)設(shè)計(jì)項(xiàng)目作品 python小游戲畢設(shè) 坦克大戰(zhàn)小游戲設(shè)計(jì)與實(shí)現(xiàn) (源碼) ?? 學(xué)長(zhǎng)根據(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)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包