日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python實現雙人貪吃蛇小游戲

瀏覽:156日期:2022-07-28 11:34:56

小編今天要給大家分享的是雙人貪吃蛇,大家可以和自己的兄弟,姐妹,爸爸,媽媽等一起玩喲!我先介紹一下游戲:

運行游戲,進入初始界面,按下空格鍵。

玩家(1):w,a,s,d

玩家(2):↑,←,↓,→

玩家要爭奪7個實物,直到吃完為止

游戲結束。

下面是小編寫的代碼:

import mathimport randomimport pygamefrom pygame.locals import * running = Falseplaying = Falsescreen = Nonetimer = Nonesnk1 = Nonesnk2 = Nonefoods = NoneremainFoods = 7radiusFood = 8 ’’’鏈表節點’’’class Node: def __init__(self, data, prev = None, next = None):self.data = dataself.prev = prevself.next = next def insert_front(self, node):if self.prev: node.prev = self.prev self.prev.next = node self.prev = node node.next = selfelse: self.prev = node node.next = selfreturn node def insert_back(self, node):if self.next: node.next = self.next self.next.prev = node self.next = node node.prev = selfelse: self.next = node node.prev = selfreturn nodedef remove(self):if self.next: self.next.prev = self.previf self.prev: self.prev.next = self.next ’’’蛇’’’class Snack: def __init__(self, surface, color, start_pos, end_pos, face):self.color = colorself.surface = surfaceself.head = Node(start_pos)self.tail = Node(end_pos)self.head.insert_back(self.tail)self.length = self.distanceBetween(start_pos, end_pos)self.face = faceself.speed = 120self.eat = 0self.grow = 0self.mapAngle = [ [0, math.pi * 3 / 2, math.pi / 2], [0, math.pi * 7 / 4, math.pi / 4], [math.pi, math.pi * 5 / 4, math.pi * 3 / 4]] ’’’坐標取整’’’ def intPos(self, pos):return (int(pos[0]), int(pos[1])) ’’’坐標轉角度’’’ def pos2Angle(self, pos):return self.mapAngle[pos[0]][pos[1]] ’’’極坐標位移’’’ def polarPos(self, pos, angle, dis):xx = pos[0] + dis * math.cos(angle)yy = pos[1] + dis * math.sin(angle)return (xx, yy) ’’’計算兩點間距離’’’ def distanceBetween(self, pos1, pos2):dx = pos2[0] - pos1[0]dy = pos2[1] - pos1[1]return math.sqrt(dx*dx + dy*dy)’’’計算兩點間角度’’’ def angleBetween(self, pos1, pos2):dx = pos2[0] - pos1[0]dy = pos2[1] - pos1[1]return math.atan2(dy, dx) ’’’改變面向’’’ def changeFace(self, newFace):if newFace[0] == 0 and newFace[1] == 0: returnif newFace == self.face: returnxx = self.face[0] + newFace[0]yy = self.face[1] + newFace[1]if xx == 0 and yy == 0: returnself.face = newFaceself.head = self.head.insert_front(Node(self.head.data)) ’’’吃到食物’’’ def eatFood(self, grow):self.grow = growself.eat += 1 ’’’繪制蛇身’’’ def draw(self):node = self.headpygame.draw.circle(self.surface, self.color, self.intPos(node.data), 6, 6)while node: n2 = node.next if not n2:break pygame.draw.line(self.surface, self.color, self.intPos(node.data), self.intPos(n2.data), 6) node = node.next’’’每幀移動’’’ def walk(self, delta):dis = self.speed * delta / 1000self.head.data = self.polarPos(self.head.data, self.pos2Angle(self.face), dis)if self.grow >= dis: self.grow -= diselse: dis -= self.grow self.grow = 0 self.cutTail(dis)’’’收縮尾巴’’’ def cutTail(self, length):node = self.tailwhile length > 0: n2 = node.prev dis = self.distanceBetween(n2.data, node.data) angle = self.angleBetween(node.data, n2.data) if dis > length:node.data = self.polarPos(node.data, angle, length)length = 0 else:self.tail = node.prevnode.remove()length -= dis node = node.prev ’’’屏幕指定位置繪制文字’’’def printText(surface, str, pos, size = 24, color = (255, 255, 255)): global screen font = pygame.font.SysFont('microsoftyaheimicrosoftyaheiui', size) text = font.render(str, True, color) w = text.get_width() h = text.get_height() surface.blit(text, (pos[0] - w / 2, pos[1] - h / 2)) ’’’添加食物’’’def addFood(): global screen, snk1, snk2, foods, remainFoods if remainFoods <= 0:return w = screen.get_width() h = screen.get_height() while True:posX = random.randint(5, w - 5)posY = random.randint(5, h - 5)color = tuple(screen.get_at((posX, posY)))if color != snk1.color and color != snk2.color: break remainFoods -= 1 if not foods:foods = Node((posX, posY)) else:foods = foods.insert_front(Node((posX, posY))) ’’’刪除食物’’’def removeFood(node): global foods if node == foods:foods = foods.next else:node.remove() ’’’檢測吃到食物’’’def checkEatFood(): global foods, radiusFood, snk1, snk2 node = foods while node:if snk1.distanceBetween(snk1.head.data, node.data) < (radiusFood + 4): snk1.eatFood(50) removeFood(node) addFood() breakelif snk2.distanceBetween(snk2.head.data, node.data) < (radiusFood + 4): snk2.eatFood(50) removeFood(node) addFood() breakelse: node = node.next ’’’游戲初始界面’’’def logo(): global screen, remainFoods w = screen.get_width() h = screen.get_height() printText(screen, 'Snack V1.0', (w / 2, h / 3), 48) printText(screen, '任意鍵繼續', (w / 2, h / 2), 24, (55, 255, 55)) printText(screen, str(remainFoods) + '個食物,搶完即止', (w / 2, h * 2 / 3), 32) def quit(): pygame.font.quit() ’’’檢測游戲結束’’’def checkGameOver(): global remainFoods, snk1, snk2, foods, playing, screen if remainFoods == 0 and foods == None:playing = Falsescreen.fill((0,0,0))w = screen.get_width()h = screen.get_height()if snk1.eat > snk2.eat: printText(screen, '玩家1 勝利', (w / 2, h / 2), 48)elif snk1.eat < snk2.eat: printText(screen, '玩家2 勝利', (w / 2, h / 2), 48)else: printText(screen, '平局', (w / 2, h / 2), 48) ’’’鍵盤按鍵轉換成面向角度’’’def cmd(): global snk1, snk2 keys = pygame.key.get_pressed() x1 = x2 = y1 = y2 = 0 if keys[pygame.K_RIGHT]:x2+=1 if keys[pygame.K_LEFT]:x2-=1 if keys[pygame.K_UP]:y2+=1 if keys[pygame.K_DOWN]:y2-=1 if keys[pygame.K_d]:x1+=1 if keys[pygame.K_a]:x1-=1 if keys[pygame.K_w]:y1+=1 if keys[pygame.K_s]:y1-=1 snk1.changeFace((x1, y1)) snk2.changeFace((x2, y2)) ’’’游戲每幀更新’’’def play(delta): global playing, snk1, snk2 if not playing:return cmd() snk1.walk(delta) snk2.walk(delta) checkEatFood() checkGameOver() ’’’繪制’’’def draw(): global snk1, snk2, playing, screen, radiusFood, remainFoods if not playing:return screen.fill((0,0,0)) snk1.draw() snk2.draw() node = foods while node:color = (255, 255, 255)if remainFoods == 0: color = (255, 0, 0)pygame.draw.circle(screen, color, node.data, radiusFood, radiusFood // 2 + 1)node = node.next def start(width = 800, height = 600, fps = 60): global running, screen, timer, playing, snk1, snk2 pygame.init() pygame.font.init() font = pygame.font.SysFont('microsoftyaheimicrosoftyaheiui', 20) pygame.display.set_caption('Snack V1.0') screen = pygame.display.set_mode((width, height))logo() snk1 = Snack(screen, (0, 150, 200), (100, 100), (0, 100), (1, 0)) snk2 = Snack(screen, (255, 100, 0), (width * 5 // 6, height // 2), (width * 5 // 6 + 100, height // 2), (-1, 0)) for i in range(3):addFood() timer = pygame.time.Clock() running = True while running:delta = timer.tick(fps)play(delta)draw()for event in pygame.event.get(): if event.type == pygame.QUIT:running = False elif event.type == pygame.KEYDOWN:if event.key == pygame.K_SPACE and playing == False: screen.fill((0,0,0)) playing = True pygame.display.flip() if __name__ == '__main__': start() quit()

以上就是雙人貪吃蛇的代碼啦!

教大家pygame的安裝方式

在終端輸入

pip install pyame,然后回車鍵進行安裝

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品多人| 99久久激情| 亚洲免费成人| 日韩精品欧美| 99久久99久久精品国产片果冰| 国产一区二区三区探花| 国产一区不卡| 精品三级在线| 国产成人免费精品| 高清不卡亚洲| 亚洲午夜一级| aa国产精品| 亚洲精品中文字幕99999| 亚洲影视一区二区三区| 综合激情婷婷| 久久精品 人人爱| 国产精品宾馆| 精品一区av| 国产成人免费视频网站视频社区| 精品午夜视频| 久久字幕精品一区| 欧美aⅴ一区二区三区视频| 在线观看视频免费一区二区三区| 麻豆亚洲精品| 鲁大师成人一区二区三区| av不卡在线| 亚洲一级二级| 五月精品视频| 亚洲一区二区免费看| 首页亚洲欧美制服丝腿| 亚洲天堂免费| 日本视频一区二区| 国产无遮挡裸体免费久久| 青草久久视频| 国产精品亚洲四区在线观看| 国产一精品一av一免费爽爽| 日本va欧美va瓶| 蜜桃久久久久久| 欧美成人日韩| 亚洲综合五月| 国产欧美88| 亚洲黄色免费av| 美女少妇全过程你懂的久久| 亚洲日产国产精品| 国产欧美视频在线| 国产精品成人国产| 99久久久久| 亚洲主播在线| 国产精品va视频| 国产成人精品亚洲线观看| 99久精品视频在线观看视频| 免费在线观看成人| 国产精品久久久久久久久久白浆 | 亚洲精品网址| 91福利精品在线观看| 你懂的国产精品永久在线| 国产视频一区三区| 97精品国产99久久久久久免费| 国产亚洲字幕| 国产色播av在线| 亚洲精品1区| 日韩成人午夜精品| 久久精品亚洲人成影院| 男女男精品网站| 欧美aⅴ一区二区三区视频| 色天使综合视频| 午夜宅男久久久| 热久久久久久| 午夜精品久久久久久久久久蜜桃| 在线视频免费在线观看一区二区| 亚洲tv在线| 国产v日韩v欧美v| 欧美高清不卡| 日本亚州欧洲精品不卡| 成人三级高清视频在线看| 国产精品嫩草99av在线| 国产日韩1区| 久久精品国产大片免费观看| 一区二区三区网站| 狠狠久久伊人| 亚洲自拍另类| 麻豆成人91精品二区三区| 不卡一区综合视频| 国产精品欧美三级在线观看| 亚洲性图久久| 国产精品调教| 亚洲综合不卡| 日本免费一区二区三区四区| av一区在线| 日本久久一区| 成人精品中文字幕| 91国内精品| 亚洲午夜精品久久久久久app| 91亚洲无吗| 欧美一级精品| 国产精品亚洲综合色区韩国 | 日韩亚洲一区在线| 日本亚洲视频| 日韩毛片在线| 欧美一区不卡| 香蕉人人精品| 久久国产精品色av免费看| 欧美一区三区| 美女国产一区二区三区| 在线午夜精品| 黄色aa久久| 奇米狠狠一区二区三区| 黄色不卡一区| 国产suv精品一区二区四区视频| 在线一区视频| 国产精品红桃| 欧美自拍一区| 免播放器亚洲一区| 久久理论电影| 国产91在线精品| 国产精品亚洲四区在线观看| 欧美日韩国产亚洲一区| 国产资源在线观看入口av| 国产日韩欧美三级| 视频一区二区三区入口| av在线日韩| 国产理论在线| 欧美黄色一区| 亚洲精品在线a| 一区二区视频欧美| 中文一区一区三区高中清不卡免费| 日韩av网站免费在线| 日韩中文字幕亚洲一区二区va在线| 国产成人免费| 国产精品色婷婷在线观看| 国产欧美日韩影院| 亚洲一卡久久| 欧美日韩日本国产亚洲在线| 日韩精品免费一区二区三区| sm久久捆绑调教精品一区| 麻豆精品视频在线观看免费| 国产精品一区免费在线| 日韩精品一区二区三区中文在线 | 国产精品手机在线播放| 日韩精品亚洲一区二区三区免费| 久久亚洲影院| 久久亚洲风情| 免费观看不卡av| 欧美 日韩 国产一区二区在线视频| 成人小电影网站| 国产成人77亚洲精品www| 久久久精品区| 久久一区精品| 欧美极品中文字幕| 美女精品视频在线| 国内揄拍国内精品久久| 国产中文欧美日韩在线| 免费在线播放第一区高清av| 国产精品亚洲欧美| 国产精品a级| 美女视频黄久久| 久久一区精品| 成人在线观看免费视频| 国产成人1区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产欧美91| 麻豆精品视频在线| 国精品产品一区| 六月婷婷综合| 日韩免费福利视频| 亚洲午夜黄色| 亚洲一区国产一区| 亚洲免费观看高清完整版在线观| 91欧美精品| 欧美精品成人| 久久精品免视看国产成人| 日本一区二区免费高清| 天堂8中文在线最新版在线| 91精品推荐| 国产一级一区二区| 日韩高清一区二区| 国产欧美91| 国产精品久久久久久久久久10秀 | 日韩一区二区久久| 日韩专区欧美专区| 久久精品97| 国产一区二区三区91| 日韩国产一区| 免费成人网www| 亚洲+小说+欧美+激情+另类| 欧美经典一区| 激情久久五月| 亚洲精选av| 国产精品v日韩精品v欧美精品网站| 精品久久一区| 久久精品国产大片免费观看| 美女国产精品| 国产精品免费大片| 啪啪国产精品| 免费精品国产| 日韩制服丝袜av| 国产a久久精品一区二区三区| 日韩黄色大片| 综合激情网...| 91亚洲国产|