国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python完成簡單的貪吃蛇小游戲附編號

89542767 / 515人閱讀

  此篇文章主要是詳細介紹了python完成簡單的貪吃蛇小游戲附編號,文章內容緊扣主題進行詳盡的基本介紹,具有很強的參考意義,需用的朋友可以學習一下


  序言:


  不知道有沒有同學們和我一樣,最開始觸碰程序編程的動機就是為了做一個游戲打?


  接下來要跟大家分享是指一個pygame所寫的“貪食蛇”手機游戲:


  “貪食蛇”這一個手機游戲在編程設計里的熟客,由于:


  簡易,最基本游戲情節你只需要蛇和食物2個就可以去了。(打手沖還要3個原素呢,想一想各是什么?)方位得話只需前后左右4個確定方位就行了。有最基本的算法設計和面向對象觀念在這其中。游戲軟件開發本身也要用到好多面向對象定義,而蛇的人體又是個純天然的“雙向鏈表”構造,很適合用于訓練算法設計了。此外較為有意思的地方在于,Python這個英語單詞在在英語中便是大蟒蛇的意味,貪食蛇算得上是“同名的手機游戲”了。很多高校里軟件開發學科的工作都有貪食蛇的論文選題,也經常會還有同學問到有關的編號。(諾基亞對這款游戲都是十分偏愛。)之前我也做過一次《貪吃蛇大作戰》的Python版本號,基于cocos2d-python開發。但那個針對新手而言有一些太復雜了。

01.png

  接下來我們做一個簡要概述:


  此編號依托于pygame研發,因此運作前請保證你自己的Python里已經成功組裝pygame。之后直接運行代碼中的game2.py即可開始游戲。除開最后的編號外,大家還特地溶解了兩個過程的py文件,供想讓自己研發的同學們參照。


  大家首先來客觀分析,要寫下這款游戲來需用注意些什么點。


  1、蛇怎么表達?


  我們能把整個游戲場地劃分為一個一個的方格,由1組連在一起方格構成“蛇”,你可以用不一樣的顏色來描述,如上圖所述中,我用深顏色表達情況,淺色系表達“蛇”。


  你可以用座標來描述任何一個小方格,X軸和Y軸標準都是能夠定好的。通過一個目錄來儲存“雙角”的座標,那樣1條“蛇”就上來了,最終只需標注的過程中以不一樣的顏色表達就可以了。


  2、蛇怎么移動?


  首先想到的就是像泥鰍腸蠕動相同,任何一個小三角往前面挪動一個,不過這樣完成下去非常麻煩。本身就是被這兒不動了。


  展開想象大家玩過的游戲貪食蛇,每一次“蛇”移動覺得上有總體往前面移動了一個,過濾掉腦袋中“蛇”的“行為”,仔細想挪動時和挪動后“蛇”位置變動,當然除了首尾,其他部位根本沒有變。那么就輕松了,將下一個格的座標導入到目錄打頭,并清除目錄的最后一個元素,就等于是蛇往前面移動了一個。


  3、怎樣判斷比賽終止?


  “蛇”挪動遠遠超過了游戲區域的范疇或是不小心碰到自身即便輸掉了,軸座標的范疇是預先訂好,超出非常容易分辨。那樣怎么判斷遇到自己呢?


  假如腦中想的就是“蛇”動游戲界面,那簡直較難了,但放進編號中,我們自己的“蛇”是個目錄,那樣只需分辨下一個格的座標是不是已經包括在“蛇”的頁面上豈不是就行了?


  梳理了各種問題,大家就可以去編號了。


  定義游戲元素及界面:


  def main():
  pygame.init()
  screen=pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
  pygame.display.set_caption('貪吃蛇')
  light=(100,100,100)#蛇的顏色
  dark=(200,200,200)#食物顏色
  font1=pygame.font.SysFont('SimHei',24)#得分的字體
  font2=pygame.font.Font(None,72)#GAME OVER的字體
  red=(200,30,30)#GAME OVER的字體顏色
  fwidth,fheight=font2.size('GAME OVER')
  line_width=1#網格線寬度
  black=(0,0,0)#網格線顏色
  bgcolor=(40,40,60)#背景色
  #方向,起始向右
  pos_x=1
  pos_y=0
  #如果蛇正在向右移動,那么快速點擊向下向左,由于程序刷新沒那么快,向下事件會被向左覆蓋掉,導致蛇后退,直接GAME OVER
  #b變量就是用于防止這種情況的發生
  b=True
  #范圍
  scope_x=(0,SCREEN_WIDTH//SIZE-1)
  scope_y=(2,SCREEN_HEIGHT//SIZE-1)
  #蛇
  snake=deque()
  #食物
  food_x=0
  food_y=0
  初始化蛇及食物:
  #初始化蛇
  def _init_snake():
  nonlocal snake
  snake.clear()
  snake.append((2,scope_y[0]))
  snake.append((1,scope_y[0]))
  snake.append((0,scope_y[0]))
  #食物
  def _create_food():
  nonlocal food_x,food_y
  food_x=random.randint(scope_x[0],scope_x[1])
  food_y=random.randint(scope_y[0],scope_y[1])
  while(food_x,food_y)in snake:
  #為了防止食物出到蛇身上
  food_x=random.randint(scope_x[0],scope_x[1])
  food_y=random.randint(scope_y[0],scope_y[1])
  _init_snake()
 _create_food()


  全部代碼:


  """
  貪吃蛇小游戲
  """
  import random
  import sys
  import time
  import pygame
  from pygame.locals import*
  from collections import deque
  SCREEN_WIDTH=600
  SCREEN_HEIGHT=480
  SIZE=20
  def print_text(screen,font,x,y,text,fcolor=(255,255,255)):
  imgText=font.render(text,True,fcolor)
  screen.blit(imgText,(x,y))
  def main():
  pygame.init()
  screen=pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
  pygame.display.set_caption('貪吃蛇')
  light=(100,100,100)#蛇的顏色
  dark=(200,200,200)#食物顏色
  font1=pygame.font.SysFont('SimHei',24)#得分的字體
  font2=pygame.font.Font(None,72)#GAME OVER的字體
  red=(200,30,30)#GAME OVER的字體顏色
  fwidth,fheight=font2.size('GAME OVER')
  line_width=1#網格線寬度
  black=(0,0,0)#網格線顏色
  bgcolor=(40,40,60)#背景色
  #方向,起始向右
  pos_x=1
  pos_y=0
  #如果蛇正在向右移動,那么快速點擊向下向左,由于程序刷新沒那么快,向下事件會被向左覆蓋掉,導致蛇后退,直接GAME OVER
  #b變量就是用于防止這種情況的發生
  b=True
  #范圍
  scope_x=(0,SCREEN_WIDTH//SIZE-1)
  scope_y=(2,SCREEN_HEIGHT//SIZE-1)
  #蛇
  snake=deque()
  #食物
  food_x=0
  food_y=0
  #初始化蛇
  def _init_snake():
  nonlocal snake
  snake.clear()
  snake.append((2,scope_y[0]))
  snake.append((1,scope_y[0]))
  snake.append((0,scope_y[0]))
  #食物
  def _create_food():
  nonlocal food_x,food_y
  food_x=random.randint(scope_x[0],scope_x[1])
  food_y=random.randint(scope_y[0],scope_y[1])
  while(food_x,food_y)in snake:
  #為了防止食物出到蛇身上
  food_x=random.randint(scope_x[0],scope_x[1])
  food_y=random.randint(scope_y[0],scope_y[1])
  _init_snake()
  _create_food()
  game_over=True
  start=False#是否開始,當start=True,game_over=True時,才顯示GAME OVER
  score=0#得分
  orispeed=0.5#原始速度
  speed=orispeed
  last_move_time=None
  pause=False#暫停
  while True:
  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
  _init_snake()
  _create_food()
  pos_x=1
  pos_y=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):
  #這個判斷是為了防止蛇向上移時按了向下鍵,導致直接GAME OVER
  if b and not pos_y:
  pos_x=0
  pos_y=-1
  b=False
  elif event.key in(K_s,K_DOWN):
  if b and not pos_y:
  pos_x=0
  pos_y=1
  b=False
  elif event.key in(K_a,K_LEFT):
  if b and not pos_x:
  pos_x=-1
  pos_y=0
  b=False
  elif event.key in(K_d,K_RIGHT):
  if b and not pos_x:
  pos_x=1
  pos_y=0
  b=False
  #填充背景色
  screen.fill(bgcolor)
  #畫網格線豎線
  for x in range(SIZE,SCREEN_WIDTH,SIZE):
  pygame.draw.line(screen,black,(x,scope_y[0]*SIZE),(x,SCREEN_HEIGHT),line_width)
  #畫網格線橫線
  for y in range(scope_y[0]*SIZE,SCREEN_HEIGHT,SIZE):
  pygame.draw.line(screen,black,(0,y),(SCREEN_WIDTH,y),line_width)
  if game_over:
  if start:
  print_text(screen,font2,(SCREEN_WIDTH-fwidth)//2,(SCREEN_HEIGHT-fheight)//2,'GAME OVER',
  red)
  else:
  curTime=time.time()
  if curTime-last_move_time>speed:
  if not pause:
  b=True
  last_move_time=curTime
  next_s=(snake[0][0]+pos_x,snake[0][1]+pos_y)
  if next_s[0]==food_x and next_s[1]==food_y:
  #吃到了食物
  _create_food()
  snake.appendleft(next_s)
  score+=10
  speed=orispeed-0.03*(score//100)
  else:
  if scope_x[0]<=next_s[0]<=scope_x[1]and scope_y[0]<=next_s[1]<=scope_y[1]
  and next_s not in snake:
  snake.appendleft(next_s)
  snake.pop()
  else:
  game_over=True
  #畫食物
  if not game_over:
  #避免GAME OVER的時候把GAME OVER的字給遮住了
  pygame.draw.rect(screen,light,(food_x*SIZE,food_y*SIZE,SIZE,SIZE),0)
  #畫蛇
  for s in snake:
  pygame.draw.rect(screen,dark,(s[0]*SIZE+line_width,s[1]*SIZE+line_width,
  SIZE-line_width*2,SIZE-line_width*2),0)
  print_text(screen,font1,30,7,f'速度:{score//100}')
  print_text(screen,font1,450,7,f'得分:{score}')
  pygame.display.update()
  if __name__=='__main__':
  main()


  綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。

       

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128828.html

相關文章

  • 60行Python代碼實現闖關升級貪吃,很少有人能到第十關(源碼和成品)

    摘要:由于年底發明,第一個公開發行版發行于年。像語言一樣源代碼同樣遵循協議。官方宣布,年月日,停止的更新。被確定為最后一個版本。的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。 ...

    cgh1999520 評論0 收藏0
  • 爆款游戲貪吃大作戰》 Python 實現

    摘要:感覺游戲審核新政實施后,國內手游市場略冷清,是不是各家的新游戲都在排隊等審核。不過現在微信已經悍然屏蔽了它的分享這個游戲就是現在免費榜排名第一的貪吃蛇大作戰。不過這實在是一個挺好實現的游戲,于是一時技癢,拿做了一個實現。 感覺游戲審核新政實施后,國內手游市場略冷清,是不是各家的新游戲都在排隊等審核。媒體們除了之前競相追捧《Pokemon Go》熱鬧了一把,似乎也聽不到什么聲音了。直到最...

    chaos_G 評論0 收藏0
  • 一步步教你怎么用python貪吃游戲

    摘要:目錄引言環境需求分析代碼實現后記引言前幾天,星球有人提到貪吃蛇,一下子就勾起了我的興趣,畢竟在那個稱霸的年代,這款游戲可是經典中的經典啊而用蛇玩貪吃蛇,那再合適不過了 目錄0 引言1 環境2 需求分析3 代碼實現4 后記 0 引言 前幾天,星球有人提到貪吃蛇,一下子就勾起了我的興趣,畢竟在那個Nokia稱霸的年代,這款游戲可是經典中的經典??!而用Python(蛇)玩Snake(貪吃蛇)...

    spademan 評論0 收藏0
  • 使用TypeScript和Canvas編寫移動端貪吃大作戰游戲

    摘要:基本介紹一款移動端貪吃蛇大作戰游戲。主要的游戲邏輯有貪吃蛇移動碰撞檢測貪吃蛇碰撞碰撞墻壁和吃食物。貪吃蛇的身體如何跟隨頭部移動需要分為兩種情況,在單位時間內貪吃蛇移動一單位長度和貪吃蛇移動多單位長度。 基本介紹 一款移動端貪吃蛇大作戰游戲。(只支持移動端) 這是一個臨近 deadline 的課設項目,為了方便地使用TS,我直接使用angular-cli生成了TypeScript的項...

    AlphaWallet 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<