日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

使用python game写一个贪吃蛇游戏

發(fā)布時(shí)間:2023/12/20 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用python game写一个贪吃蛇游戏 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

最近在用python 做項(xiàng)目,也想對(duì)python有多一些了解,之前有用C語言和C++寫過python游戲,剛好可以通過這個(gè)游戲來對(duì)python多一些了解。

文章內(nèi)容翻譯自以下鏈接

https://www.edureka.co/blog/snake-game-with-pygame/

pygame 介紹

pygame是一個(gè)利用SDK庫編寫的游戲庫,SDL全名是Simple DirectMediaLayer,SDK是用C編寫的,不過也可以用C++開發(fā),很多很多人已經(jīng)加入pygame中,pygame會(huì)越來越好。

pygame鏈接地址

www.pygame.org

pygame安裝方式

pip install pygame

使用pygame創(chuàng)建一個(gè)窗體

import pygame pygame.init() dis=pygame.display.set_mode((400,300)) pygame.display.update() pygame.quit() quit()

上面的代碼會(huì)直接一閃而過,如果想看到窗體,如果加點(diǎn)調(diào)試

import pygame pygame.init() dis=pygame.display.set_mode((400,300)) pygame.display.update() pygame.display.set_caption('Snake game by Edureka') game_over=False while not game_over:for event in pygame.event.get():print(event) #prints out all the actions that take place on the screenpygame.quit() quit()

輸出

update函數(shù)是用來接收窗體的觸發(fā)事件,比如點(diǎn)擊窗體,按鍵響應(yīng)等等。還有一個(gè)類似的函數(shù)是filp()

上面的代碼可以看到窗體,鼠標(biāo)點(diǎn)擊滑動(dòng)也能收到事件,但是點(diǎn)擊關(guān)閉窗體并沒有響應(yīng),因?yàn)槲覀兇a里面沒有接收這個(gè)事件,修改代碼如下。

import pygame pygame.init() dis=pygame.display.set_mode((400,300)) pygame.display.update() pygame.display.set_caption('Snake game by Edureka') game_over=False while not game_over:for event in pygame.event.get():if event.type==pygame.QUIT:game_over=Truepygame.quit() quit()

創(chuàng)建一個(gè)貪吃蛇的基礎(chǔ)模塊

代碼如下,這個(gè)部分代碼比較簡單,可以看到一個(gè)簡單的貪吃蛇顏色塊

import pygame pygame.init() dis=pygame.display.set_mode((400,300))pygame.display.set_caption('Snake game by Edureka')blue=(0,0,255) red=(255,0,0)game_over=False while not game_over:for event in pygame.event.get():if event.type==pygame.QUIT:game_over=Truepygame.draw.rect(dis,blue,[200,150,10,10])pygame.display.update() pygame.quit() quit()

讓貪吃蛇可以隨著按鍵控制移動(dòng)

import pygamepygame.init()white = (255, 255, 255) black = (0, 0, 0) red = (255, 0, 0)dis = pygame.display.set_mode((800, 600)) pygame.display.set_caption('Snake Game by Edureka')game_over = Falsex1 = 300 y1 = 300x1_change = 0 y1_change = 0clock = pygame.time.Clock()while not game_over:for event in pygame.event.get():if event.type == pygame.QUIT:game_over = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:x1_change = -10y1_change = 0elif event.key == pygame.K_RIGHT:x1_change = 10y1_change = 0elif event.key == pygame.K_UP:y1_change = -10x1_change = 0elif event.key == pygame.K_DOWN:y1_change = 10x1_change = 0x1 += x1_changey1 += y1_changedis.fill(white)pygame.draw.rect(dis, black, [x1, y1, 10, 10])pygame.display.update()clock.tick(30)pygame.quit() quit()

動(dòng)圖如下:

墻壁撞擊檢測

import pygame import time pygame.init()white = (255, 255, 255) black = (0, 0, 0) red = (255, 0, 0)dis_width = 800 dis_height = 600 dis = pygame.display.set_mode((dis_width, dis_width)) pygame.display.set_caption('Snake Game by Edureka')game_over = Falsex1 = dis_width/2 y1 = dis_height/2snake_block=10x1_change = 0 y1_change = 0clock = pygame.time.Clock() snake_speed=30font_style = pygame.font.SysFont(None, 50)def message(msg,color):mesg = font_style.render(msg, True, color)dis.blit(mesg, [dis_width/2, dis_height/2])while not game_over:for event in pygame.event.get():if event.type == pygame.QUIT:game_over = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:x1_change = -snake_blocky1_change = 0elif event.key == pygame.K_RIGHT:x1_change = snake_blocky1_change = 0elif event.key == pygame.K_UP:y1_change = -snake_blockx1_change = 0elif event.key == pygame.K_DOWN:y1_change = snake_blockx1_change = 0if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:game_over = Truex1 += x1_changey1 += y1_changedis.fill(white)pygame.draw.rect(dis, black, [x1, y1, snake_block, snake_block])pygame.display.update()clock.tick(snake_speed)message("You lost",red) pygame.display.update() time.sleep(2)pygame.quit() quit()

給貪吃蛇添加食物

import pygame import time import randompygame.init()white = (255, 255, 255) black = (0, 0, 0) red = (255, 0, 0) blue = (0, 0, 255)dis_width = 800 dis_height = 600dis = pygame.display.set_mode((dis_width, dis_height)) pygame.display.set_caption('Snake Game by Edureka')clock = pygame.time.Clock()snake_block = 10 snake_speed = 30font_style = pygame.font.SysFont(None, 30)def message(msg, color):mesg = font_style.render(msg, True, color)dis.blit(mesg, [dis_width/3, dis_height/3])def gameLoop(): # creating a functiongame_over = Falsegame_close = Falsex1 = dis_width / 2y1 = dis_height / 2x1_change = 0y1_change = 0foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0foody = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0while not game_over:while game_close == True:dis.fill(white)message("You Lost! Press Q-Quit or C-Play Again", red)pygame.display.update()for event in pygame.event.get():if event.type == pygame.KEYDOWN:if event.key == pygame.K_q:game_over = Truegame_close = Falseif event.key == pygame.K_c:gameLoop()for event in pygame.event.get():if event.type == pygame.QUIT:game_over = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:x1_change = -snake_blocky1_change = 0elif event.key == pygame.K_RIGHT:x1_change = snake_blocky1_change = 0elif event.key == pygame.K_UP:y1_change = -snake_blockx1_change = 0elif event.key == pygame.K_DOWN:y1_change = snake_blockx1_change = 0if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:game_close = Truex1 += x1_changey1 += y1_changedis.fill(white)pygame.draw.rect(dis, blue, [foodx, foody, snake_block, snake_block])pygame.draw.rect(dis, black, [x1, y1, snake_block, snake_block])pygame.display.update()if x1 == foodx and y1 == foody:print("Yummy!!")clock.tick(snake_speed)pygame.quit()quit()gameLoop()

如果貪吃蛇吃到食物的話,就會(huì)輸出打印消息Yummy!!.

如果貪吃蛇碰到食物,讓貪吃蛇變長

import pygame import time import randompygame.init()white = (255, 255, 255) yellow = (255, 255, 102) black = (0, 0, 0) red = (213, 50, 80) green = (0, 255, 0) blue = (50, 153, 213)dis_width = 600 dis_height = 400dis = pygame.display.set_mode((dis_width, dis_height)) pygame.display.set_caption('Snake Game by Edureka')clock = pygame.time.Clock()snake_block = 10 snake_speed = 15font_style = pygame.font.SysFont("bahnschrift", 25) score_font = pygame.font.SysFont("comicsansms", 35)def our_snake(snake_block, snake_list):for x in snake_list:pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])def message(msg, color):mesg = font_style.render(msg, True, color)dis.blit(mesg, [dis_width / 6, dis_height / 3])def gameLoop():game_over = Falsegame_close = Falsex1 = dis_width / 2y1 = dis_height / 2x1_change = 0y1_change = 0snake_List = []Length_of_snake = 1foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0while not game_over:while game_close == True:dis.fill(blue)message("You Lost! Press C-Play Again or Q-Quit", red)pygame.display.update()for event in pygame.event.get():if event.type == pygame.KEYDOWN:if event.key == pygame.K_q:game_over = Truegame_close = Falseif event.key == pygame.K_c:gameLoop()for event in pygame.event.get():if event.type == pygame.QUIT:game_over = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:x1_change = -snake_blocky1_change = 0elif event.key == pygame.K_RIGHT:x1_change = snake_blocky1_change = 0elif event.key == pygame.K_UP:y1_change = -snake_blockx1_change = 0elif event.key == pygame.K_DOWN:y1_change = snake_blockx1_change = 0if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:game_close = Truex1 += x1_changey1 += y1_changedis.fill(blue)pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])snake_Head = []snake_Head.append(x1)snake_Head.append(y1)snake_List.append(snake_Head)if len(snake_List) > Length_of_snake:del snake_List[0]for x in snake_List[:-1]:if x == snake_Head:game_close = Trueour_snake(snake_block, snake_List)pygame.display.update()if x1 == foodx and y1 == foody:foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0Length_of_snake += 1clock.tick(snake_speed)pygame.quit()quit()gameLoop()

增加分?jǐn)?shù)顯示

import pygame import time import randompygame.init()white = (255, 255, 255) yellow = (255, 255, 102) black = (0, 0, 0) red = (213, 50, 80) green = (0, 255, 0) blue = (50, 153, 213)dis_width = 600 dis_height = 400dis = pygame.display.set_mode((dis_width, dis_height)) pygame.display.set_caption('Snake Game by Edureka')clock = pygame.time.Clock()snake_block = 10 snake_speed = 15font_style = pygame.font.SysFont("bahnschrift", 25) score_font = pygame.font.SysFont("comicsansms", 35)def Your_score(score):value = score_font.render("Your Score: " + str(score), True, yellow)dis.blit(value, [0, 0])def our_snake(snake_block, snake_list):for x in snake_list:pygame.draw.rect(dis, black, [x[0], x[1], snake_block, snake_block])def message(msg, color):mesg = font_style.render(msg, True, color)dis.blit(mesg, [dis_width / 6, dis_height / 3])def gameLoop():game_over = Falsegame_close = Falsex1 = dis_width / 2y1 = dis_height / 2x1_change = 0y1_change = 0snake_List = []Length_of_snake = 1foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0while not game_over:while game_close == True:dis.fill(blue)message("You Lost! Press C-Play Again or Q-Quit", red)Your_score(Length_of_snake - 1)pygame.display.update()for event in pygame.event.get():if event.type == pygame.KEYDOWN:if event.key == pygame.K_q:game_over = Truegame_close = Falseif event.key == pygame.K_c:gameLoop()for event in pygame.event.get():if event.type == pygame.QUIT:game_over = Trueif event.type == pygame.KEYDOWN:if event.key == pygame.K_LEFT:x1_change = -snake_blocky1_change = 0elif event.key == pygame.K_RIGHT:x1_change = snake_blocky1_change = 0elif event.key == pygame.K_UP:y1_change = -snake_blockx1_change = 0elif event.key == pygame.K_DOWN:y1_change = snake_blockx1_change = 0if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1 < 0:game_close = Truex1 += x1_changey1 += y1_changedis.fill(blue)pygame.draw.rect(dis, green, [foodx, foody, snake_block, snake_block])snake_Head = []snake_Head.append(x1)snake_Head.append(y1)snake_List.append(snake_Head)if len(snake_List) > Length_of_snake:del snake_List[0]for x in snake_List[:-1]:if x == snake_Head:game_close = Trueour_snake(snake_block, snake_List)Your_score(Length_of_snake - 1)pygame.display.update()if x1 == foodx and y1 == foody:foodx = round(random.randrange(0, dis_width - snake_block) / 10.0) * 10.0foody = round(random.randrange(0, dis_height - snake_block) / 10.0) * 10.0Length_of_snake += 1clock.tick(snake_speed)pygame.quit()quit()gameLoop()

最終的效果動(dòng)圖

總結(jié)

以上是生活随笔為你收集整理的使用python game写一个贪吃蛇游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 手机成人免费视频 | 尹人香蕉 | 中文字幕在线观看网 | 色射视频 | 中文字幕在线观看视频一区 | 天堂一级片| 日本一区二区三区四区五区 | 福利一区三区 | 天天干天天操 | 在线免费观看日韩 | 成人欧美一区二区三区黑人免费 | 日韩一区二区三区中文字幕 | 青草视频在线观看免费 | 国产精品女人和拘 | 色天天av | 91色| 国产精品丝袜黑色高跟 | 猛男被粗大男男1069 | 国产精品一区久久久 | 亚洲高清在线观看 | 久久有精品 | 大奶子av| 免费在线黄色网址 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 亚洲综合精品一区 | 狠狠操婷婷 | 亚洲免费精品视频在线观看 | 国产精品自拍网站 | 亚洲激情婷婷 | 开心春色激情网 | 91精品国产自产91精品 | 青青草国产一区二区三区 | 欧洲视频一区二区 | 亚洲视频手机在线观看 | 日韩在线精品强乱中文字幕 | 国产成a人亚洲精v品在线观看 | 男人和女人做爽爽视频 | av成人免费 | 日批动态图 | www.伊人网| 91porny丨首页入口在线 | 思思99精品视频在线观看 | 国产美女在线精品 | 18视频在线观看娇喘 | 中文字幕一区二区三区波野结 | 黄色网址链接 | 欧美在线网址 | 色xxxx| 男女午夜爽爽 | 亚洲精品粉嫩小泬20p | 樱空桃在线观看 | 麻豆视频在线免费观看 | 天堂欧美城网站网址 | 亚欧洲精品在线视频 | 欧美123区| 国产乱仑 | 日韩久久网 | 久久2018| 超碰97国产精品人人cao | 亚洲国产日韩一区二区 | 国产在线xxxx | 色综合中文综合网 | 亚洲一级片av | 日本视频免费在线播放 | 美女黄站 | 国产乱国产乱老熟 | 五月天三级 | 欧美韩日 | 亚洲欧美一区二区三区孕妇 | 99爱精品视频 | 天天操狠狠操夜夜操 | 久久精品国产亚洲 | 五月婷婷一区二区三区 | 亚洲熟妇av乱码在线观看 | 精品国产一区二区三区久久 | 国产蜜臀av一区二区 | 国产精品久久久久久久久免费看 | 色午夜av| 四虎一区二区三区 | 亚洲第一综合网 | 国产日韩在线观看视频 | 成人网一区 | 日本中文字幕在线 | 欧美日韩在线视频一区二区 | 欧美一级做a爰片免费视频 成人激情在线观看 | 男女精品视频 | 日韩精品在线免费观看 | 久久不卡日韩美女 | 久久久久99精品成人片毛片 | 青青久视频 | 欧美性色视频 | 看一级片| 国产精品成熟老女人 | 国产网站精品 | 日本三级中文字幕在线观看 | h网站在线看 | 一区二区三区欧美日韩 | 人妻互换一区二区激情偷拍 | 精品视频一区二区三区四区 |