<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          100行代碼,實現(xiàn)python貪吃蛇

          共 2354字,需瀏覽 5分鐘

           ·

          2021-10-01 08:40


          貪吃蛇 具體實現(xiàn)部分,大致分為三個模塊來介紹:游戲初始化、游戲運行(蛇移動、吃掉食物)、游戲結(jié)束

          1,游戲初始化

          首先,需對游戲中的  蛇、食物、游戲邊界、各元素顏色屬性、得分記錄、速度記錄 等進(jìn)行初始化,初始的窗口大小設(shè)為(600,480),通過寬度為 1 的黑線將游戲窗口分為數(shù)個小方格(每個小方格大小為 (20,20))

          初始化的大小占連續(xù)3個小方格;食物占 1個小方格、初始時食物隨機(jī)放置在窗口內(nèi)某一坐標(biāo)處(當(dāng)然需要排除蛇身區(qū)域外)

          2,游戲得分

          當(dāng)游戲開始時需給與 **蛇 ** 運動方向設(shè)定為一個初始參數(shù) ,這里以二維元組形式存儲,賦值給變量 p,共分為四種情況:

          • p = (1,0),向右;

          • P = (0,-1),向下;

          • p = (0,1),向上;

          • p = (-1,0),向左;

          配合鍵盤事件響應(yīng),當(dāng)用戶按下 上(w)、下(s)、左(a)、右(d)鍵時,程序會執(zhí)行相應(yīng)操作

                  for event in pygame.event.get():#事件刷新            if event.type == QUIT:                sys.exit()#退出            elif event.type == KEYDOWN:                if event.key == K_RETURN:                    if game_over:                        start = True                        game_over = False                        b =True                        snake = init_snake()                        food = create_food(snake)                        food_style = get_food_style()                        pos = (1,0)#方向                        score = 0                        last_move_time = time.time()#上次移動時間
          elif event.key == K_SPACE: if not game_over: pause = not pause elif event.key in(K_w,K_UP): #判斷防止蛇向上移動時按了向下鍵,導(dǎo)致Game Over if b and not pos[1]: pos = (0,-1) b = False elif event.key in (K_s,K_DOWN): if b and not pos[1]: pos =(0,1) b = False elif event.key in (K_a,K_LEFT): if b and not pos[0]: pos = (-1,0) b =False elif event.key in (K_d,K_RIGHT): if b and not pos[0]: pos =(1,0) b = False

          蛇身移動

          程序?qū)?nbsp; 所占所有小方格坐標(biāo)依次存儲在一個隊列中,移動一次,隊列完成一次進(jìn)出操作:隊尾刪除一個元素,對列頭部插入蛇頭所在的新方格坐標(biāo);


          吃到食物

          每吃到一次食物,蛇身多增加一個小方格區(qū)域,其隊列插入一個新元素、長度加一,

          3,游戲結(jié)束

          游戲終止的邊界條件為兩類

          1,移動區(qū)域超出窗口邊界;

          2,蛇頭碰到蛇身;

          程序中用 布爾變量 game_over來標(biāo)識游戲是否結(jié)束(True或者False),每次刷新頁面之前默認(rèn)為 False,當(dāng)游戲正常運行未發(fā)生以上兩類事件時設(shè)為True 游戲運行,否則游戲結(jié)束

          為了提高游戲體驗,程序中用 score 變量表示得分,speed 來表示移動速度,得分每增加100 更新一次移動速度,隨著時間推移游戲難度也不斷加大

           score += food_style[0] speed = orispeed - 0.03*(score//100) # 更新速度

          文章轉(zhuǎn)載:Python編程學(xué)習(xí)圈
          (版權(quán)歸原作者所有,侵刪)

          點擊下方“閱讀原文”查看更多

          瀏覽 81
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久久网| 日本一级红色片 | 免费播放的a片 | 日本亲与子乱人妻hd | 国产黄色电影免费在线观看 |