成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

教你使用Python的pygame模塊實現(xiàn)拼圖游戲

89542767 / 688人閱讀

  pygame模塊是一個可以跨平臺的模塊,主要就是作為游戲開發(fā)來進(jìn)行使用的,那么,怎么才能夠?qū)崿F(xiàn)其游戲開發(fā)的技能了?比如說,怎么實現(xiàn)使用pygame去實現(xiàn)拼圖的游戲呢?下面就給大家詳細(xì)解答下。


  pygame介紹


  Python Pygame是一款專門為開發(fā)和設(shè)計2D電子游戲而生的軟件包,它支Windows、Linux、Mac OS等操作系統(tǒng),具有良好的跨平臺性。Pygame由Pete Shinners于2000年開發(fā)而成,是一款免費、開源的的軟件包,因此您可以放心地使用它來開發(fā)游戲,不用擔(dān)心有任何費用產(chǎn)生。


  Pygame在SDL(Simple DirectMedia Layer,使用C語言編寫的多媒體開發(fā)庫)的基礎(chǔ)上開發(fā)而成,它提供了諸多操作模塊,比如圖像模塊(image)、聲音模塊(mixer)、輸入/輸出(鼠標(biāo)、鍵盤、顯示屏)模塊等。相比于開發(fā)3D游戲而言,Pygame更擅長開發(fā)2D游戲,比如于飛機(jī)大戰(zhàn)、貪吃蛇、掃雷等游戲。


  安裝pygame

  pip install pygame


  pygame常用模塊


  pygame.cdrom訪問光驅(qū)


  pygame.cursors加載光標(biāo)


  pygame.display訪問顯示設(shè)備


  pygame.draw繪制形狀、線和點


  pygame.event管理事件


  pygame.font使用字體


  pygame.image加載和存儲圖片


  pygame.joystick使用游戲手柄或者類似的東西


  pygame.key讀取鍵盤按鍵


  pygame.mixer聲音


  pygame.mouse鼠標(biāo)


  pygame.movie播放視頻


  pygame.music播放音頻


  pygame.overlay訪問高級視頻疊加


  pygame.rect管理矩形區(qū)域


  pygame.scrap本地剪貼板訪問


  pygame.sndarray操作聲音數(shù)據(jù)


  pygame.sprite操作移動圖像


  pygame.surface管理圖像和屏幕


  pygame.surfarray管理點陣圖像數(shù)據(jù)


  pygame.time管理時間和幀信息


  pygame.transform縮放和移動圖像


  pygame入門案例


  import pygame
  import sys
  pygame.init()#初始化pygame
  size=width,height=320,240#設(shè)置窗口大小
  screen=pygame.display.set_mode(size)#顯示窗口
  while True:#死循環(huán)確保窗口一直顯示
  for event in pygame.event.get():#遍歷所有事件
  if event.type==pygame.QUIT:#如果單擊關(guān)閉窗口,則退出
  sys.exit()
  pygame.quit()#退出pygame


  pygame實現(xiàn)拼圖游戲


  import pygame,sys,random
  from pygame.locals import*
  #一些常量
  WINDOWWIDTH=500
  WINDOWHEIGHT=500
  BACKGROUNDCOLOR=(255,255,255)
  BLUE=(0,0,255)
  BLACK=(0,0,0)
  FPS=40
  VHNUMS=3
  CELLNUMS=VHNUMS*VHNUMS
  MAXRANDTIME=100
  #退出
  def terminate():
  pygame.quit()
  sys.exit()
  #隨機(jī)生成游戲盤面
  def newGameBoard():
  board=[]
  for i in range(CELLNUMS):
  board.append(i)
  blackCell=CELLNUMS-1
  board[blackCell]=-1
  for i in range(MAXRANDTIME):
  direction=random.randint(0,3)
  if(direction==0):
  blackCell=moveLeft(board,blackCell)
  elif(direction==1):
  blackCell=moveRight(board,blackCell)
  elif(direction==2):
  blackCell=moveUp(board,blackCell)
  elif(direction==3):
  blackCell=moveDown(board,blackCell)
  return board,blackCell
  #若空白圖像塊不在最左邊,則將空白塊左邊的塊移動到空白塊位置
  def moveRight(board,blackCell):
  if blackCell%VHNUMS==0:
  return blackCell
  board[blackCell-1],board[blackCell]=board[blackCell],board[blackCell-1]
  return blackCell-1
  #若空白圖像塊不在最右邊,則將空白塊右邊的塊移動到空白塊位置
  def moveLeft(board,blackCell):
  if blackCell%VHNUMS==VHNUMS-1:
  return blackCell
  board[blackCell+1],board[blackCell]=board[blackCell],board[blackCell+1]
  return blackCell+1
  #若空白圖像塊不在最上邊,則將空白塊上邊的塊移動到空白塊位置
  def moveDown(board,blackCell):
  if blackCell<VHNUMS:
  return blackCell
  board[blackCell-VHNUMS],board[blackCell]=board[blackCell],board[blackCell-VHNUMS]
  return blackCell-VHNUMS
  #若空白圖像塊不在最下邊,則將空白塊下邊的塊移動到空白塊位置
  def moveUp(board,blackCell):
  if blackCell>=CELLNUMS-VHNUMS:
  return blackCell
  board[blackCell+VHNUMS],board[blackCell]=board[blackCell],board[blackCell+VHNUMS]
  return blackCell+VHNUMS
  #是否完成
  def isFinished(board,blackCell):
  for i in range(CELLNUMS-1):
  if board<i>!=i:
  return False
  return True
  #初始化
  pygame.init()
  mainClock=pygame.time.Clock()
  #加載圖片
  gameImage=pygame.image.load('1.jpg')
  gameRect=gameImage.get_rect()
  #設(shè)置窗口,窗口的寬度和高度取決于圖片的寬高
  windowSurface=pygame.display.set_mode((gameRect.width,gameRect.height))
  pygame.display.set_caption('拼圖')
  cellWidth=int(gameRect.width/VHNUMS)
  cellHeight=int(gameRect.height/VHNUMS)
  finish=False
  gameBoard,blackCell=newGameBoard()
  #游戲主循環(huán)
  while True:
  for event in pygame.event.get():
  if event.type==QUIT:
  terminate()
  if finish:
  continue
  if event.type==KEYDOWN:
  if event.key==K_LEFT or event.key==ord('a'):
  blackCell=moveLeft(gameBoard,blackCell)
  if event.key==K_RIGHT or event.key==ord('d'):
  blackCell=moveRight(gameBoard,blackCell)
  if event.key==K_UP or event.key==ord('w'):
  blackCell=moveUp(gameBoard,blackCell)
  if event.key==K_DOWN or event.key==ord('s'):
  blackCell=moveDown(gameBoard,blackCell)
  if event.type==MOUSEBUTTONDOWN and event.button==1:
  x,y=pygame.mouse.get_pos()
  col=int(x/cellWidth)
  row=int(y/cellHeight)
  index=col+row*VHNUMS
  if(
  index==blackCell-1 or index==blackCell+1 or index==blackCell-VHNUMS or index==blackCell+VHNUMS):
  gameBoard[blackCell],gameBoard[index]=gameBoard[index],gameBoard[blackCell]
  blackCell=index
  if(isFinished(gameBoard,blackCell)):
  gameBoard[blackCell]=CELLNUMS-1
  finish=True
  windowSurface.fill(BACKGROUNDCOLOR)
  for i in range(CELLNUMS):
  rowDst=int(i/VHNUMS)
  colDst=int(i%VHNUMS)
  rectDst=pygame.Rect(colDst*cellWidth,rowDst*cellHeight,cellWidth,cellHeight)
  if gameBoard<i>==-1:
  continue
  rowArea=int(gameBoard<i>/VHNUMS)
  colArea=int(gameBoard<i>%VHNUMS)
  rectArea=pygame.Rect(colArea*cellWidth,rowArea*cellHeight,cellWidth,cellHeight)
  windowSurface.blit(gameImage,rectDst,rectArea)
  for i in range(VHNUMS+1):
  pygame.draw.line(windowSurface,BLACK,(i*cellWidth,0),(i*cellWidth,gameRect.height))
  for i in range(VHNUMS+1):
  pygame.draw.line(windowSurface,BLACK,(0,i*cellHeight),(gameRect.width,i*cellHeight))
  pygame.display.update()
  mainClock.tick(FPS)


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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/128330.html

相關(guān)文章

  • Python pygame如何實現(xiàn)拼圖游戲?下文給大家解答

      Python pygame作為一門常見的技能,其實,它的應(yīng)用范圍還是比較的廣泛的,那么,它是怎么實現(xiàn)其拼圖游戲呢?下面就以案例的形式,去給大家做個解答,下面就給大家詳細(xì)解答下?! ygame介紹  Python Pygame是一款專門為開發(fā)和設(shè)計2D電子游戲而生的軟件包,它支Windows、Linux、Mac OS等操作系統(tǒng),具有良好的跨平臺性。Pygame由Pete Shinners于20...

    89542767 評論0 收藏0
  • 首次公開,整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • ?? 如何在 Pygame 中移動你游戲角色 ??

    作者:海擁 主頁:https://haiyong.blog.csdn.net/ ? Pygame是一組跨平臺的 Python 模塊,專為編寫視頻游戲而設(shè)計。它包括旨在與 Python 編程語言一起使用的計算機(jī)圖形和聲音庫。您可以使用 pygame 創(chuàng)建不同類型的游戲,包括街機(jī)游戲、平臺游戲等等。 使用的圖像: ?你可以控制玩家的移動。為此,首先使用 pygame 的 display.set...

    lookSomeone 評論0 收藏0
  • Python學(xué)習(xí)之路11-武裝飛船

    摘要:和標(biāo)志,用于表示飛船是否正在移動,用于實現(xiàn)飛船在不松開按鍵下連續(xù)移動。重寫了函數(shù),用于繪制飛船模塊該模塊主要是集中處理游戲中發(fā)生的各種事件。函數(shù)用于監(jiān)聽游戲的事件,比如,它表示游戲推出事件和分別表示鍵盤按下與松開事件。 《Python編程:從入門到實踐》筆記。本章主要學(xué)習(xí)如何使用pygame編寫一個簡單的小飛機(jī)打外星人的游戲,由于本人對用python寫游戲并不是特別感興趣,所以主要是看...

    李昌杰 評論0 收藏0

發(fā)表評論

0條評論

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