怡春院av_国产精品久久久久久亚洲毛片_精品国产乱码一区二区三区_亚洲一区欧美日韩_亚洲黄色激情视频_国产全黄a一级毛片91_亚洲免费在线播放

【游戲開發】貪吃蛇展示+源代碼

2021-04-06
5372
0

還記得時代的貪吃蛇游戲吧,兩只可愛的小蛇為了吃豆豆的冒險經歷,貪吃蛇(也叫做貪食蛇)游戲是一款休閑益智類游戲,有PC和手機等多平臺版本。既簡單又耐玩。該游戲通過控制蛇頭方向吃蛋,從而使得蛇變得越來越長。

 

今天小編整理了貪吃蛇的源碼,大家可以試著去做一下,看看能不能做出來。

 

 

【Python/PySide2】貪吃蛇展示:

 

 

【Python/PySide2】貪吃蛇源代碼:

 

import random

from enum import Enum

from sys import argv

from PySide2.QtCore import *

from PySide2.QtGui import *

from PySide2.QtWidgets import *

class DIRECTION(Enum) :

  """

    方向

    """

  UP = 0

  DOWN = 1

  LEFT = 2

  RIGHT = 3

#常量

SCREEN_WIDTH = 600 #屏幕寬度

SCREEN_HEIGHT = 600 #屏幕高度

UNIT_SIZE = 50 #格子邊長

GAME_UNITS = int((SCREEN_WIDTH * SCREEN_HEIGHT) / UNIT_SIZE) #格子數量

DELAY = 150 #延遲

class GameThread(QThread) :

  """

    游戲線程

    """

  def __init__(self) - >None:

    super(GameThread, self).__init__(None)

  def run(self) - >None:

    """

        游戲運行

        """

    
while w.running:

      w.Move() #蛇移動

      w.checkApple() #檢查蛇頭是否吃到蘋果

      w.checkCollisions() #檢查蛇頭是否撞到墻 / 蛇身

      w.repaint() #重繪

      app.processEvents() #處理事件

      self.msleep(DELAY) #等待

class GameFrame(QWidget) :

  """

    游戲窗口

    """

  running = False #游戲是否正在運行

  bodyParts = 6 #身體長度

  applesEaten = 0 #已吃蘋果數量

  appleX = 0 #蘋果X坐標

  appleY = 0 #蘋果Y坐標

  direction = DIRECTION.RIGHT #蛇運動方向 (默認為右)

  x = [0
for i in range(GAME_UNITS)] #蛇身x坐標

  y = [0
for i in range(GAME_UNITS)] #蛇身y坐標

  def __init__(self) - >None:

    super(GameFrame, self).__init__()

    self.gameThread = GameThread() #創建游戲線程

    self.setWindowTitle(''''''''Snake'''''''') #設置窗口標題

    self.setFixedSize(SCREEN_WIDTH, SCREEN_HEIGHT) #設置窗口固定大小

    self.startGame() #開始游戲

  def startGame(self) - >None:

    """

        開始游戲

        """

    self.running = True

    self.newApple() #新建蘋果

    self.gameThread.start() #開始線程

  def paintEvent(self, event: QPaintEvent) - >None:

    """

        窗口繪制

        """

    p = QPainter(self)

    #背景繪制

    p.fillRect(0, 0, self.width(), self.height(), Qt.GlobalColor.black)

    #游戲結束

    
if not self.running:

      p.setPen(Qt.GlobalColor.red) #設置為紅色

      p.setFont(QFont(''''''''微軟雅黑'''''''', 20)) #設置字體

      p.drawText(0, 0, self.width(), self.height(), Qt.AlignCenter, ''''''''Game Over! (Score: %d)'''''''' % self.applesEaten)

      
return

    #游戲網格線

    
for i in range(int(SCREEN_HEIGHT / UNIT_SIZE)) :

      p.setPen(Qt.GlobalColor.white) #設置為白色

      p.drawLine(i * UNIT_SIZE, 0, i * UNIT_SIZE, SCREEN_HEIGHT) #豎線

      p.drawLine(0, i * UNIT_SIZE, SCREEN_WIDTH, i * UNIT_SIZE) #橫線

    #蘋果

    brush = QBrush()

    brush.setStyle(Qt.SolidPattern)

    brush.setColor(Qt.GlobalColor.red)

    p.setBrush(brush)

    p.drawEllipse(self.appleX, self.appleY, UNIT_SIZE, UNIT_SIZE)

    #蛇

    brush.setColor(Qt.GlobalColor.green)

    p.setBrush(brush)

    
for i in range(0, self.bodyParts) :

      p.drawRect(self.x[i], self.y[i], UNIT_SIZE, UNIT_SIZE)

      brush.setColor(QColor(45, 180, 0))

      p.setBrush(brush)

    #分數繪制

    p.setPen(Qt.GlobalColor.red)

    p.setFont(QFont(''''''''微軟雅黑'''''''', 20))

    p.drawText(0, 0, self.width(), self.height(), Qt.AlignHCenter, ''''''''Score: %d'''''''' % self.applesEaten)

  def newApple(self) - >None:

    """

        新建蘋果

        """

    self.appleX = random.randint(0, int(SCREEN_WIDTH / UNIT_SIZE) - 1) * UNIT_SIZE #隨機產生坐標X

    self.appleY = random.randint(0, int(SCREEN_HEIGHT / UNIT_SIZE) - 1) * UNIT_SIZE #隨機產生坐標Y

  def Move(self) - >None:

    """

        蛇移動

        """

    
for i in range(self.bodyParts, 0, -1) :

      self.x[i] = self.x[i - 1]

      self.y[i] = self.y[i - 1]

    
if self.direction == DIRECTION.UP:

      self.y[0] -= UNIT_SIZE

    elif self.direction == DIRECTION.DOWN:

      self.y[0] = UNIT_SIZE

    elif self.direction == DIRECTION.LEFT:

      self.x[0] -= UNIT_SIZE

    elif self.direction == DIRECTION.RIGHT:

      self.x[0] = UNIT_SIZE

  def checkApple(self) - >None:

    """

        檢查蛇頭是否吃到蘋果

        """

    
if self.x[0] == self.appleX and self.y[0] == self.appleY:

      self.bodyParts = 1

      self.applesEaten = 1

      self.newApple()

  def checkCollisions(self) - >None:

    """

        檢查蛇頭是否撞到墻/蛇身

        """

    
for i in range(self.bodyParts, 0, -1) :

      
if self.x[0] == self.x[i] and self.y[0] == self.y[i] :

        self.running = False

        
return

    
if self.x[0] < 0 or self.x[0] > SCREEN_WIDTH or self.y[0] < 0 or self.y[0] > SCREEN_HEIGHT:

      self.running = False

  def keyPressEvent(self, event: QKeyEvent) - >None:

    """

        捕獲鍵盤輸入

        """

    
if event.key() == Qt.Key_Up:

      
if self.direction != DIRECTION.DOWN:

        self.direction = DIRECTION.UP

    elif event.key() == Qt.Key_Down:

      
if self.direction != DIRECTION.UP:

        self.direction = DIRECTION.DOWN

    elif event.key() == Qt.Key_Left:

      
if self.direction != DIRECTION.RIGHT:

        self.direction = DIRECTION.LEFT

    elif event.key() == Qt.Key_Right:

      
if self.direction != DIRECTION.LEFT:

        self.direction = DIRECTION.RIGHT

  def closeEvent(self, event: QCloseEvent) - >None:

    """

        關閉線程

        """

    self.gameThread.terminate()

if __name__ == ''''''''__main__'''''''':

  app = QApplication(argv)

  w = GameFrame()

  w.show()

  exit(app.exec_())

 

 

轉載聲明:本文來源于網絡,不作任何商業用途

免責聲明:本文內部分內容來自網絡,所涉繪畫作品及文字版權與著作權歸原作者,若有侵權或異議請聯系我們處理。
收藏

全部評論

您還沒登錄

暫無留言,趕緊搶占沙發
繪學霸是國內專業的CG數字藝術設計線上線下學習平臺,在繪學霸有2D繪畫、3D模型、影視后期、動畫、特效等數字藝術培訓課程,也有學習資源下載,還有行業社區交流。學習、交流,來繪學霸就對了。
繪學霸iOS端二維碼

IOS下載

繪學霸安卓端二維碼

安卓下載

繪學霸微信小程序二維碼

小程序

版權聲明
本網站所有產品設計、功能及展示形式,均已受版權或產權保護,任何公司及個人不得以任何方式復制部分或全部,違者將依法追究責任,特此聲明。
熱線電話
18026259035
咨詢時間:9:00~21:00
在線客服
聯系網站客服
客服微信:18026259035
公司地址
中國·廣州
廣州市海珠區曉港中馬路130號之19
繪學霸客戶端(權限暫無,用于CG資源與教程交流分享)
開發者:廣州王氏軟件科技有限公司 | 應用版本:Android:6.0,IOS:5.1 | App隱私政策> | 應用權限 | 更新時間:2020.1.6
主站蜘蛛池模板: 免费视频88av在线 | 久色99| 蜜桃精品视频在线 | 欧洲女同免费视频网站 | 国产三级在线观看a | 免费一级毛片清高播放 | 亚洲精品人人 | 欧美性bbbbbbbbbbbb | a级黄视频 | 日本不卡在线观看 | 99视频精品免视3 | 久久精品2020 | 色综合天天综合网国产国产人 | 欧美黑人猛烈ⅹxxx狂暴 | 三级网址在线 | 久久久91精品国产一区二区三区 | 激情五月婷婷综合网 | 漂亮的保姆高清在线观看韩国 | 久草黄色 | 有码中文字幕 | 欧美高清观看免费全部完 | 香港三级网址 | 久久久久夜色精品波多野结衣 | 亚洲欧美日韩中文字幕在线不卡 | 欧美色吧视频在线观看 | 日韩精品视频网站 | 九九九色视频在线观看免费 | 国产精品jizz在线观看免费 | 亚洲第一视频在线观看 | 久久精品a | 国产网址在线观看 | 欧美黑人猛烈ⅹxxx狂暴 | 国产日韩高清一区二区三区 | 日本人强jizzja | 九九在线精品视频播放 | 黄色网站黄色小说 | 99亚洲精品 | 日本xxx在线播放 | 2021最新热播中文字幕 | 久久综合九色综合欧洲色 | 日本特黄在线观看免费 |