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

您的位置:首頁技術(shù)文章
文章詳情頁

python 實現(xiàn)簡單的吃豆人游戲

瀏覽:157日期:2022-06-23 08:47:36
效果展示:

python 實現(xiàn)簡單的吃豆人游戲

程序簡介

1.使用pygame模組2.在material目錄下有一些素材3.吃豆人的游戲主體4.吃豆人怪物的AI(未使用深度學(xué)習(xí))

主要代碼

main.py

import pygame, sysfrom pygame.locals import *from unit import user, enemyimport random#constant initializeFPS = 60BLOCK_SIZE = 24WIDTH = 29HEIGHT = 15WINDOW_WIDTH = WIDTH * BLOCK_SIZEWINDOW_HEIGHT = HEIGHT * BLOCK_SIZEMAP_NAME = './material/map.maze'BGM_NAME = './material/bgm.ogg'BLOCK_IMAGE = './material/block.png'FOOD_IMAGE = './material/food.png'GAMEOVER_IMAGE = './material/gameover.png'SERVER_PORT = 30000ENEMY_COUNT = 4OX = 1OY = 1DELAY = 8#pygame initializepygame.init()display = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))clock = pygame.time.Clock()block_image = pygame.image.load(BLOCK_IMAGE)food_image = pygame.image.load(FOOD_IMAGE)gameover_image = pygame.image.load(GAMEOVER_IMAGE)bgm = pygame.mixer.music.load(BGM_NAME)scene = 'game'unit_list = []game_map = []#map initializedef load_map(filename):global game_mapgame_map.clear()file = open(filename, ’r’)for line in file.readlines():game_map.append(list(line.strip()))passpass#set passportdef through(position):x = position[0]y = position[1]in_range = (x >= 0 and x < WIDTH) and (y >= 0 and y < HEIGHT)in_space = (not game_map[y][x] == ’1’)return (in_range and in_space)pass#gameover?def check_gameover(user_pos, enemy_pos):global scenegameover = (enemy_pos[0] == user_pos[0] and enemy_pos[1] == user_pos[1])if gameover:scene = 'gameover'passreturn gameoverpass#gameoverdef gameover():pygame.mixer.music.stop()keys = pygame.key.get_pressed()if keys[K_RETURN]:initialize()passdisplay.fill((0, 0, 0))x = (WINDOW_WIDTH-gameover_image.get_width())/2y = (WINDOW_HEIGHT-gameover_image.get_height())/2display.blit(gameover_image, (x, y))pygame.display.update()pass#unit initializedef initialize_unit():unit_list.clear()ox = random.randint(1, WIDTH - 2)oy = random.randint(1, HEIGHT - 2)while not through((ox, oy)):ox = random.randint(1, WIDTH - 2)oy = random.randint(1, HEIGHT - 2)unit_list.append(user(OX, OY))for i in range(0, ENEMY_COUNT):enemy_color = i % 4ox = random.randint(1, WIDTH - 2)oy = random.randint(1, HEIGHT - 2)while not through((ox, oy)):ox = random.randint(1, WIDTH - 2)oy = random.randint(1, HEIGHT - 2)unit_list.append(enemy(enemy_color, ox, oy))passpass#initializedef initialize():global sceneload_map(MAP_NAME)initialize_unit()scene = 'game'pygame.mixer.music.play(-1)#system updatedef system_update():clock.tick(FPS)for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()pass#update controlcontrol_clock = [0, DELAY]def control_update():#user controlif control_clock[0] > control_clock[1]:user = unit_list[0]keys = pygame.key.get_pressed()passport = Falsepos = user.positionif keys[K_UP]: pos = user.move(through(user.next(0)))elif keys[K_RIGHT]: pos = user.move(through(user.next(1)))elif keys[K_DOWN]:pos = user.move(through(user.next(2)))elif keys[K_LEFT]:pos = user.move(through(user.next(3)))passgame_map[pos[1]][pos[0]] = ’0’#enemy controlu_pos = unit_list[0].positionfor index in range(1, len(unit_list)):enemy = unit_list[index]if check_gameover(u_pos, enemy.position): breakenemy.track(u_pos)passport = through(enemy.next())enemy.move(passport)while not passport:enemy.clockwise()passport = through(enemy.next())enemy.move(passport)passcontrol_clock[0] = 0passelse:control_clock[0] += 1passpass#update screendef screen_update():display.fill((0, 0, 0))for i in range(0, HEIGHT):for j in range(0, WIDTH):x = j * BLOCK_SIZEy = i * BLOCK_SIZEif game_map[i][j] == ’1’:display.blit(block_image, (x, y))elif game_map[i][j] == ’4’:display.blit(food_image, (x, y))passpasspassfor unit in unit_list:unit.update()x = unit.position[0] * BLOCK_SIZEy = unit.position[1] * BLOCK_SIZEdisplay.blit(unit.image, (x, y), unit.image_rect())pygame.display.update()pass#firstinitialize()#main loopwhile True:system_update()if scene == 'game':control_update()screen_update()else:gameover()passpass

unit.py

import pygameimport mathimport randomUSER_IMAGE = './material/user.png'ENEMY_IMAGE = [('./material/enemy%d.png' % i) for i in range(1, 5)]class unit():def __init__(self, filename):super(unit, self).__init__()self.image = pygame.image.load(filename)self.clock = [0, 5]self.direction = 0self.position = [1, 1, 1, 1]self.index = 0self.source_rect = 0passdef update(self):self.animation_update()passdef animation_update(self):self.clock[0] += 1if self.clock[0] > self.clock[1]:if self.index < 4:self.index += 4else:self.index -= 4self.source_rect = self.image_rect()self.clock[0] = 0passpassdef move(self, passport):if passport:pos = self.position[:]self.position[0] = self.position[2]self.position[1] = self.position[3]else:self.position[2] = self.position[0]self.position[3] = self.position[1]pos = self.positionpassreturn pospassdef next(self):self.ahead()return (self.position[2], self.position[3])passdef turn(self, direction):self.direction = direction % 4self.index = self.directionpassdef ahead(self):if self.direction == 0:self.position[3] -= 1elif self.direction == 1:self.position[2] += 1elif self.direction == 2:self.position[3] += 1elif self.direction == 3:self.position[2] -= 1passdef image_rect(self):w = self.image.get_width()h = self.image.get_height()ox = math.floor(w / 4 * (self.index % 4)) oy = math.floor(h / 2 * math.floor(self.index / 4))return pygame.Rect((ox, oy), (24, 24))class user(unit):def __init__(self, x, y):super(user, self).__init__(USER_IMAGE)self.position = [x, y, x, y]passdef next(self, direction):self.turn(direction)self.ahead()return (self.position[2], self.position[3])passclass enemy(unit):def __init__(self, id, x, y):filename = ENEMY_IMAGE[id]super(enemy, self).__init__(filename)self.position = [x, y, x, y]passdef track(self, user_pos):rand_dir = [1,2,3,4]self.turn(random.choice(rand_dir))passdef clockwise(self):self.turn(self.direction + 1)passclass enemy_user(unit):def __init__(self, x, y):filename = ENEMY_IMAGE[0]super(enemy_user, self).__init__(filename)self.position = [x, y, x, y]passdef move(self, x, y):self.position[0] = xself.position[1] = ypass總結(jié):

程序還有許多地方可以完善,如怪物的AI,時間的判定等等,有興趣的大佬可以加以修改完善。

完整項目下載:https://github.com/tinytsunami/Python-Game

以上就是python 實現(xiàn)簡單的吃豆人游戲的詳細(xì)內(nèi)容,更多關(guān)于python 實現(xiàn)吃豆人游戲的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品一级| 国产剧情在线观看一区| 亚洲中午字幕| 水蜜桃精品av一区二区| 麻豆精品国产91久久久久久| 免费亚洲婷婷| 日韩毛片视频| 国产精品资源| 久久影视一区| 精品免费av一区二区三区| 日韩极品在线观看| 亚洲天堂日韩在线| 另类亚洲自拍| 日韩激情av在线| 欧洲av一区二区| 国产精品久久久久av蜜臀| 亚洲精品123区| 国产剧情一区二区在线观看| 视频一区中文| 国产精品二区影院| 蜜乳av另类精品一区二区| 在线一区欧美| 亚洲欧美视频| 欧美日韩国产高清| 夜夜嗨网站十八久久| 偷拍欧美精品| 视频小说一区二区| 国产一区二区三区不卡视频网站 | 欧美欧美黄在线二区| 日本久久一区| 鲁大师影院一区二区三区| 久久中文字幕一区二区三区| 麻豆成人av在线| 欧美特黄一区| 欧美三区不卡| 你懂的国产精品永久在线| 91中文字幕精品永久在线| 久久精品免费一区二区三区 | 蜜臀av免费一区二区三区| 电影亚洲精品噜噜在线观看| 首页国产欧美久久| 日韩深夜视频| 国产精品黄网站| 爽好久久久欧美精品| 精品黄色一级片| 国产三级精品三级在线观看国产| 香蕉成人av| 亚洲天堂av影院| 久久精品国产999大香线蕉| 日韩精品一卡二卡三卡四卡无卡| 久久精品观看| 国产精品资源| 久久精品福利| 色在线视频观看| 日本久久黄色| 日韩毛片在线| 在线精品小视频| 日韩av影院| 久久精品国产www456c0m| 亚洲精品自拍| 午夜天堂精品久久久久| 久久蜜桃资源一区二区老牛| 国产精品永久| 欧美日韩伊人| 午夜欧美在线| 久久福利毛片| 日韩精品五月天| 日韩一区中文| 亚洲精品麻豆| 亚洲开心激情| 深夜福利亚洲| 欧美视频久久| 天堂av在线| 日韩大片在线| 99久久99视频只有精品| 欧美日韩国产在线观看网站| 午夜欧美精品久久久久久久| 久久久国产精品一区二区中文| 香蕉成人av| 亚洲区第一页| 国产精品国产一区| 69精品国产久热在线观看| 欧美另类专区| 日韩av资源网| 女人天堂亚洲aⅴ在线观看| 国产精品mv在线观看| 91国语精品自产拍| 97精品国产| 黄色精品视频| 欧美在线综合| 日韩免费高清| 六月丁香综合在线视频| 日韩中文字幕一区二区三区| 国内精品亚洲| 日本少妇精品亚洲第一区| 亚洲免费影院| 91久久中文| 男女性色大片免费观看一区二区 | 免费视频一区二区| 在线一区二区三区视频| 成人日韩av| 亚洲天堂日韩在线| 精品淫伦v久久水蜜桃| 久久精品国产99国产| 国产亚洲高清在线观看| 亚洲精品麻豆| 免费在线观看一区二区三区| 日av在线不卡| 在线精品视频一区| 日本大胆欧美人术艺术动态| 日韩一区精品| 在线免费观看亚洲| 日韩制服丝袜av| 国产精品久久久久久久久久齐齐| 久久精品青草| 日韩在线第七页| 精品国产美女a久久9999| 深夜福利亚洲| 亚洲日本国产| 在线国产日韩| 天堂俺去俺来也www久久婷婷| 亚洲欧美不卡| 免费看黄色91| 一二三区精品| 亚洲精品乱码久久久久久蜜桃麻豆 | 天堂成人国产精品一区| 性欧美69xoxoxoxo| 亚洲福利专区| 欧美日韩国产传媒| 久久中文字幕二区| 久久激情婷婷| 欧美特黄一区| 男女男精品视频网| 一区二区三区四区日韩| 午夜亚洲福利| 国产精品欧美在线观看| 日韩国产在线不卡视频| 国产精品日韩精品中文字幕| 免费看黄色91| 亚洲性色av| 日韩精品社区| 日韩亚洲精品在线观看| 日韩电影在线视频| 国产精品多人| 中文在线а√在线8| 99视频精品全国免费| 亚洲bt欧美bt精品777| 午夜天堂精品久久久久| 欧美天堂一区二区| 欧美国产先锋| 日本а中文在线天堂| 久久久久久久久99精品大| 午夜日韩av| 亚洲一二av| 国产欧美日韩影院| 国产福利91精品一区二区| 免费高潮视频95在线观看网站| 久久久五月天| 综合激情一区| 欧美精品中文| 国产精品国产一区| 9色国产精品| 88久久精品| 成人国产精品一区二区免费麻豆| 91精品蜜臀一区二区三区在线| 黑丝一区二区三区| 日韩av一二三| 激情黄产视频在线免费观看| 亚洲精品888| 欧美亚洲自偷自偷| 国产中文欧美日韩在线 | 日韩不卡免费视频| 理论片午夜视频在线观看| 激情综合亚洲| 日本欧美韩国一区三区| 色婷婷色综合| 热久久国产精品| 老司机精品视频网| 婷婷精品进入| 国产精品久久久久久模特| 群体交乱之放荡娇妻一区二区| 国产偷自视频区视频一区二区| 欧美在线不卡| 亚洲四虎影院| 欧美综合精品| 久久一级电影| 国产精品蜜月aⅴ在线| 久久高清免费| 亚洲bt欧美bt精品777| 国产精品99一区二区三区| 亚洲免费高清| 精品国产亚洲日本| 蜜桃传媒麻豆第一区在线观看| 久久精品国产99| 亚洲影院天堂中文av色| 伊人久久视频| 日韩成人精品一区二区三区 | 高清一区二区| 亚洲人成毛片在线播放女女| 精品一区二区三区中文字幕|