在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    游戲全面“入侵”生活:Python發(fā)布“酷跑+”計(jì)劃

    游戲全面“入侵”生活:Python發(fā)布“酷跑+”計(jì)劃

    導(dǎo)語(yǔ)

    “ 急速奔跑——享受生活中的美好時(shí)光!”

    ——夢(mèng)想

    重磅消息!木木子今天又要給大家介紹一款新游戲啦!

    期待不期待呀來我們先來看看是什么游戲讓大家這么沸騰

    《天天酷跑》這款游戲有好幾年的歷史了,當(dāng)初確實(shí)是十分火爆,還記得自己第一次接觸這款游戲

    是在高考后的暑假,因?yàn)槟莻€(gè)假期比較長(zhǎng),就去一家服裝店打工了,閑下來的時(shí)候店里的人就在玩游戲

    天天酷跑,為了能有話題聊就入坑了,后來發(fā)現(xiàn)還有不少同學(xué)也都在玩,而且分?jǐn)?shù)比自己高好多。

    現(xiàn)在算算大概過去六七年了,自己早已放棄天天酷跑了。

    可能因?yàn)樘焯炜崤苁亲约航佑|的第一款手游吧,印象比較深刻——現(xiàn)在好不容易下載進(jìn)去發(fā)現(xiàn)很多

    規(guī)則都改了,捂臉.jpg

    完全不會(huì)操作了。這不?準(zhǔn)備做一款Python版簡(jiǎn)易的《天天跑酷》小游戲,順便回一下童年撒!

    小簡(jiǎn)介:

    《天天酷跑》是騰訊移動(dòng)游戲平臺(tái)專為海量微信和手機(jī)QQ用戶量身打造的一款精品手機(jī)游戲。

    在沿襲傳統(tǒng)玩法的基礎(chǔ)上,特別加入了閃靚坐騎、萌動(dòng)寵物等一系列心動(dòng)設(shè)計(jì),為玩家?guī)碜顬榈?/p>

    心應(yīng)手的跑酷體驗(yàn)。隨時(shí)隨地與微信、QQ好友一起玩,搶占排行榜、愛心送不停、高分炫出來!貼

    心交互讓你和好友親密無間,分享炫耀讓你備受好友關(guān)注,成為酷跑達(dá)人!

    大聲告訴你的好友:跑酷從此不一樣!

    正文

    本文是Pygame游戲模塊制作的《天天跑酷》小游戲啦~

    一、準(zhǔn)備中

    好啦!我們正式開始準(zhǔn)備小游戲所需要的素材、環(huán)境吧!

    圖片素材:

    環(huán)境安裝:

    Python3.6、Pycharm2019(大部分版本都是可以運(yùn)行的)、Pygame部分內(nèi)置模塊。

    模塊安裝:pip install -i https://pypi.douban.com/simple/ +模塊名

    1

    游戲規(guī)則:

    空格鍵跳躍、按一次短跳躍、按二次長(zhǎng)跳躍,中間會(huì)出現(xiàn)很多障礙物,還有相應(yīng)的金幣等,游戲失敗后按空格鍵重新開始。

    二、游戲步驟

    1).游戲初始化

    利用pygame創(chuàng)建特定大小的游戲窗口。

    顯示游戲的初始界面,提示用戶開始游戲

    在游戲界面中設(shè)置背景圖片,并顯示人物、障礙物和金幣等物體。

    2).游戲控制

    人物自動(dòng)向前奔跑,按空格鍵控制人物跳躍。

    利用addObstacle函數(shù)創(chuàng)建障礙物。

    利用updateScreen函數(shù)不斷更新界面中物體的顯示。

    3).碰撞檢測(cè)

    利用ListenKeyBoard函數(shù)監(jiān)控用戶的鍵盤輸入,并檢測(cè)人物和障礙物金幣等是否碰撞。

    人物和障礙物碰撞:當(dāng)檢測(cè)到人物和障礙物的位置信息有交集時(shí),判斷為碰撞,人物生命值減一,障礙物消滅。

    人物和金幣碰撞:當(dāng)人物撞到金幣時(shí),金幣消滅,得分+100。

    當(dāng)人物成功躲避障礙物時(shí),得分+10。

    利用judgeState函數(shù)來判斷游戲是否結(jié)束。

    游戲結(jié)束時(shí)顯示最終得分,并提示用戶按“Enter”鍵重新開始游戲。

    三、正式敲代碼import pygame,sysimport random

    # 游戲配置width = 1200

    #窗口寬度height = 508

    #窗口高度size = width, height score=None

    #分?jǐn)?shù)myFont=myFont1=None

    #字體surObject=None

    #障礙物圖片

    surGameOver=None

    #游戲結(jié)束圖片bg=None

    #背景對(duì)象role=None

    #人物對(duì)象object=None

    #障礙物對(duì)象

    objectList=[]

    #障礙物對(duì)象數(shù)組clock=None

    #時(shí)鐘gameState=None

    #游戲狀態(tài)(0,1)表示(游戲中,游戲結(jié)束)class Role:

    #人物 def __init__(self,surface=None,y=None):

    self.surface=surface

    self.y=y

    self.w=(surface.get_width())/12

    self.h=surface.get_height()/2

    self.currentFrame=-1

    self.state=0

    #0代表跑步狀態(tài),1代表跳躍狀態(tài),2代表連續(xù)跳躍

    self.g=1

    #重力加速度

    self.vy=0

    #y軸速度

    self.vy_start=-20

    #起跳開始速度

    def getRect(self):

    return (0,self.y+12,self.w,self.h)class Object:

    #障礙物 def __init__(self,surface,x=0,y=0):

    self.surface=surface

    self.x=x

    self.y=y

    self.w=surface.get_width()

    self.h=surface.get_height()

    self.currentFrame=random.randint(0,6)

    self.w = 100

    self.h = 100

    def getRect(self):

    return (self.x,self.y,self.w,self.h)

    def collision(self,rect1,rect2):

    #碰撞檢測(cè)

    if (rect2[0]>=rect1[2]-20) or (rect1[0]+40>=rect2[2])or (rect1[1]+rect1[3]<rect2[1]+20) or (rect2[1]+rect2[3]<rect1[1]+20):

    return False

    return True

    class Bg:

    #背景

    def __init__(self,surface):

    self.surface=surface

    self.dx=-10

    self.w=surface.get_width()

    self.rect=surface.get_rect()

    def initGame():

    global bg,role,clock,gameState,surObject,surGameOver,score,myFont,myFont1,objectList

    #分?jǐn)?shù)初始化

    score=0

    #初始化

    objectList=[]

    #加載字體

    myFont=pygame.font.Font(“./freesansbold.ttf”,32) myFont1=pygame.font.Font(“./freesansbold.ttf”,64)

    # 創(chuàng)建時(shí)鐘對(duì)象 (可以控制游戲循環(huán)頻率)

    clock = pygame.time.Clock()

    #初始化游戲狀態(tài)

    gameState=0

    #游戲背景

    surBg=pygame.image.load(“image/bg.bmp”).convert_alpha()

    bg=Bg(surBg)

    #結(jié)束畫面

    surGameOver=pygame.image.load(“image/gameover.bmp”).convert_alpha()

    #人物圖片

    surRole=pygame.image.load(“image/role.png”).convert_alpha()

    role=Role(surRole,508-85)

    #障礙物圖片

    surObject=pygame.image.load(“image/object.png”).convert_alpha()

    def addObject():

    global surObject,object,objectList,object

    rate=4

    #是否生成障礙物

    if not random.randint(0,300)<rate:

    return

    y=random.choice([height-100,height-200,height-300,height-400]) object=Object(surObject,width+40,y)

    objectList.append(object)def updateLogic():

    global gameState,score

    #鍵盤事件處理 for event in pygame.event.get():

    if event.type == pygame.QUIT:

    sys.exit()

    elif event.type==pygame.KEYDOWN:

    #空格鍵跳躍

    if gameState==0:

    if event.key==pygame.K_SPACE:

    if role.state==0:

    role.state=1

    role.vy=role.vy_start

    elif role.state==1:

    role.state=2

    role.vy=role.vy_start

    elif gameState==1:

    if event.key==pygame.K_SPACE:

    #重新開始游戲

    initGame()

    if gameState==0:

    #背景的移動(dòng)

    bg.dx+=10

    if bg.dx==1200:

    bg.dx=0

    #人物的移動(dòng)

    if role.state==0:

    role.currentFrame+=1

    if role.currentFrame==12:

    role.currentFrame=0

    else:

    role.y+=role.vy

    role.vy+=role.g

    if role.y>=508-85:

    role.y=508-85

    role.state=0

    #障礙物的移動(dòng)

    addObject()

    for object in objectList:

    object.x-=10

    #障礙物移動(dòng)

    # 障礙物超出屏幕,移除障礙物

    if object.x+object.w<=0:

    objectList.remove(object)

    score+=10

    #避開障礙物,加10分

    print(“移除了一個(gè)目標(biāo)”)

    #碰撞檢測(cè)

    if object.collision(role.getRect(),object.getRect()):

    if(object.currentFrame==6):

    objectList.remove(object)

    score+=100

    #吃金幣加100分

    print(score)

    print(“吃了一個(gè)金幣”)

    else:

    gameState=1 #游戲失敗

    print(“發(fā)生了碰撞!”)

    def updateView(screen):

    #背景的貼圖

    screen.blit(bg.surface,[-bg.dx,0])

    screen.blit(bg.surface,[1200-bg.dx,0])

    #分?jǐn)?shù)的貼圖

    textSur=myFont.render(“score:%d”%score, True, (128, 128, 128))

    screen.blit(textSur, (500,20))

    del textSur

    #人物的貼圖 screen.blit(role.surface, [0, role.y], [int(role.currentFrame) * role.w, 0, role.w, role.h])

    #障礙物的貼圖

    for object in objectList:

    screen.blit(object.surface, [object.x, object.y], [int(object.currentFrame) * object.w, 0, object.w, object.h])

    def judgeState(screen):

    global gameState

    if gameState==0:

    updateView(screen)

    return elif gameState==1:

    screen.blit(surGameOver,[0,0])

    textSur = myFont1.render(“GameOver Score:%d”%score, True, (255, 0, 0)) screen.blit(textSur, (width/2-350, height/2+150))

    def main():

    pygame.init()

    screen = pygame.display.set_mode(size)

    pygame.display.set_caption(‘天天跑酷——CSDN:夢(mèng)想)

    initGame()

    screen.blit(bg.surface,[0,0])

    while True:

    #設(shè)置時(shí)鐘頻率

    clock.tick(60)

    judgeState(screen)

    updateLogic()

    pygame.display.flip()main()

    四、效果展示

    視頻展示——

    游戲全面“入侵”生活:Python發(fā)布“酷跑+”計(jì)劃!

    截圖展示——

    游戲開始:

    跳躍、障礙物:

    游戲結(jié)束:

    總結(jié)

    看完這款游戲,是不是涌出滿滿的回憶呢:趁爸媽不在家時(shí),偷偷打開電腦玩游戲

    剛買智能手機(jī)時(shí),下載一兩個(gè)最火爆的游戲……

    現(xiàn)在看來,每一款游戲,都是時(shí)光的印記,你還有什么游戲回憶殺呢?之前也寫過很多童年經(jīng)典游戲可以去看看哈!

    碼字不易 點(diǎn)個(gè)關(guān)注行不行

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月29日 14:46
    下一篇 2022年6月29日 14:46

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息