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

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

python 實現簡單的吃豆人游戲

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

python 實現簡單的吃豆人游戲

程序簡介

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

主要代碼

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總結:

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

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

以上就是python 實現簡單的吃豆人游戲的詳細內容,更多關于python 實現吃豆人游戲的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲永久av| 亚洲一区二区三区久久久| 日韩影院精彩在线| 激情六月综合| 天堂网av成人| 亚洲www啪成人一区二区| 国内精品伊人| 国产精品片aa在线观看| 色偷偷色偷偷色偷偷在线视频| 免费一级欧美片在线观看网站| 青青草伊人久久| 夜夜嗨网站十八久久| 欧美午夜不卡| 六月丁香综合| 亚洲美女久久| 欧美日韩中文| 美日韩一区二区三区| 你懂的国产精品永久在线| 美女视频免费精品| 久草免费在线视频| 99精品小视频| 91精品99| 亚洲综合专区| 日韩高清电影一区| 国产精品视频一区二区三区四蜜臂| 国产探花在线精品| 久久狠狠久久| 久久精品国产久精国产| 97精品在线| 在线日韩av| 美国三级日本三级久久99| 在线精品视频一区| 国产伦理一区| 国内自拍视频一区二区三区| 国产a亚洲精品| 精品捆绑调教一区二区三区| 亚洲精品va| 在线国产日韩| 国产精品国码视频| 成午夜精品一区二区三区软件| 成人片免费看| 视频一区中文| 综合激情一区| 久久精品亚洲| 亚洲女同中文字幕| 日本不卡视频在线观看| 欧美激情五月| 日韩三区免费| 亚洲一区二区日韩| 国产精品网站在线看| 欧美日韩视频网站| 亚洲青青久久| 久久久久久网| 三级欧美在线一区| 国产精品亚洲产品| 今天的高清视频免费播放成人| 久久xxxx| 久久影视三级福利片| 影视先锋久久| 久久国内精品自在自线400部| 一区二区精品伦理...| 国产亚洲亚洲| 粉嫩av一区二区三区四区五区| 婷婷久久一区| 国产一区二区三区久久久久久久久| 久久亚洲图片| 高清av不卡| 国产精品一区二区av交换| 欧美日韩国产精品一区二区亚洲| 国产精品久久久久久av公交车| 一区在线免费| 久久影院一区二区三区| 中文字幕免费精品| 久久激情一区| 精品伊人久久久| 中文字幕亚洲影视| 久久亚洲专区| 久久久久亚洲精品中文字幕| 无码日韩精品一区二区免费| 日韩欧美少妇| 另类小说一区二区三区| 免费亚洲婷婷| 日韩视频二区| 欧美一区在线观看视频| 亚洲国内精品| 国产精品密蕾丝视频下载| 天堂√中文最新版在线| 男女激情视频一区| аⅴ资源天堂资源库在线| 视频一区二区三区中文字幕| 韩国女主播一区二区三区| 国产一区91| 久久久久久久欧美精品| 国产成人免费视频网站视频社区| 成人av动漫在线观看| 亚洲精品日本| 夜鲁夜鲁夜鲁视频在线播放| 亚洲免费成人av在线| 麻豆mv在线观看| 好看不卡的中文字幕| 日本久久综合| 日本伊人久久| 国产资源在线观看入口av| 水蜜桃久久夜色精品一区的特点| 精品视频在线一区二区在线| 在线国产日韩| 久久精品主播| 乱一区二区av| 日本不卡的三区四区五区| 午夜精品一区二区三区国产| 欧美精品91| 日韩国产在线观看一区| 欧美高清不卡| 激情久久99| 日韩不卡免费视频| 日韩一级欧洲| 亚洲精品一级二级| 欧美日韩中出| 欧美搞黄网站| 女人av一区| 日韩精品午夜| 国产一区二区亚洲| 国产美女久久| 视频一区在线播放| 久久久久国产精品一区二区| 欧美交a欧美精品喷水| 亚洲一区二区三区高清| 九九综合在线| 久久中文字幕二区| 日韩88av| 精品女同一区二区三区在线观看| 日韩精品第一| 久久精品国产大片免费观看| 国内精品亚洲| 国产高清日韩| 日韩不卡一二三区| 亚洲2区在线| 蜜桃久久av一区| 亚洲欧洲午夜| 精品一区免费| 蜜桃一区二区三区| 91精品一区国产高清在线gif| 四虎8848精品成人免费网站| 国产精品玖玖玖在线资源| 色综合视频一区二区三区日韩| 91久久视频| 狠狠干成人综合网| 久久久人人人| av一区在线| 日韩国产一区二区| 韩国精品主播一区二区在线观看| 精品伊人久久| 久草免费在线视频| 亚洲成人av观看| 99久久精品费精品国产| 中文另类视频| 久久免费大视频| 狠狠爱成人网| 免播放器亚洲| 免费视频久久| 国产精品第一国产精品| 国产精品久久久久久久久久久久久久久 | 91精品尤物| 欧美午夜网站| 国产情侣一区在线| 一区二区自拍| 免费观看不卡av| 99在线观看免费视频精品观看| 国产婷婷精品| 少妇精品在线| 国产精品最新自拍| 美女在线视频一区| 久久精品国产网站| 日本一区二区免费高清| 播放一区二区| 91久久中文| 亚洲美女91| 欧美在线看片| 久久精品主播| 丝袜美腿亚洲一区二区图片| 一区二区高清| 国产精品tv| 成人亚洲欧美| 在线 亚洲欧美在线综合一区| 日av在线不卡| 欧美偷窥清纯综合图区| 免费在线小视频| 一区福利视频| 日本色综合中文字幕| 久久精品一本| 欧美日韩一区二区综合| 噜噜噜躁狠狠躁狠狠精品视频| 欧美亚洲色图校园春色| 98精品久久久久久久| 好吊视频一区二区三区四区| 日产欧产美韩系列久久99| 久久精品一区二区三区中文字幕| 日韩成人综合| 亚洲天堂av资源在线观看| 日韩精品视频网站|