国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

使用pygame模塊編寫貪吃蛇的實(shí)例講解

2020-02-22 23:07:51
字體:
供稿:網(wǎng)友

python ### 剛學(xué)了python不久,發(fā)現(xiàn)了一個(gè)好玩的庫(kù)pygame

使用pygame模塊 利用面向?qū)ο蟮乃枷刖帉懾澇陨撸饕玫絧ygame.sprite:

游戲主類

import pygame,sysfrom snake_sprite import Game_sprite,Snake,FoodSCREEN_RECT=pygame.Rect(0,0,828,600)IMG_URL="./image/bg.jpg"#主類class Snakegame(object): def __init__(self):  self.screen=pygame.display.set_mode(SCREEN_RECT.size)  self.clock=pygame.time.Clock()  self.__create_sprites() def __create_sprites(self):  bg=Game_sprite(IMG_URL)  self.snake=Snake()  for pos in self.snake.snake_point:   self.screen.blit(self.snake.image,pos)  food=Food()  self.bg_group=pygame.sprite.Group(bg)  self.snake_group=pygame.sprite.Group(self.snake)  self.food_group = pygame.sprite.Group(food) def start_game(self):  while True:   #1.時(shí)鐘設(shè)置   self.clock.tick(30)   #2.事件監(jiān)聽   self.__event_handler()   #3.碰撞檢測(cè)   self.__check_collide()   #4.精靈更新   self.__update_sprites()   #5.屏幕更新   pygame.display.update() def __event_handler(self):  for event in pygame.event.get():   if event.type==pygame.QUIT:    Snakegame.__game_over()   elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT and /     self.snake.direction !='L':    self.snake.speedy = 0    self.snake.speedx = 1    self.snake.direction = 'R'   elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT and /     self.snake.direction !='R':    self.snake.speedy = 0    self.snake.speedx = -1    self.snake.direction = 'L'   elif event.type == pygame.KEYDOWN and event.key == pygame.K_UP and /     self.snake.direction !='D':    self.snake.speedx = 0    self.snake.speedy = -1    self.snake.direction = 'U'   elif event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN and /     self.snake.direction !='U':    self.snake.speedx=0    self.snake.speedy=1    self.snake.direction='D' def __check_collide(self):  pass def __update_sprites(self):  self.bg_group.update()  self.bg_group.draw(self.screen)  self.snake_group.update()  self.snake_group.draw(self.screen)  self.food_group.update()  self.food_group.draw(self.screen) @staticmethod def __game_over():  pygame.quit()  exit()#游戲啟動(dòng)if __name__ == '__main__': snake=Snakegame() snake.start_game()

工具類

import pygameimport randomSNAKE_IMG="./image/snake.png"FOOD_IMG="./image/food.jpg"class Game_sprite(pygame.sprite.Sprite): def __init__(self,img_name,speedx=1,speedy=0):  #調(diào)用父類的初始化方法  super(Game_sprite, self).__init__()  #屬性  self.image=pygame.image.load(img_name)  self.rect=self.image.get_rect()  self.speedx=speedx  self.speedy=speedy def update(self):  pass#蛇實(shí)物class Snake(Game_sprite): def __init__(self,direction='R',snakelist=[[40,40],[80,40]]):  self.direction=direction  self.snake_point=snakelist  super().__init__(SNAKE_IMG)  self.rect.x=self.snake_point[1][0]  self.rect.y=self.snake_point[1][1] def update(self):  self.rect.x += self.speedx  self.rect.y += self.speedyclass Food(Game_sprite): def __init__(self):  super(Food, self).__init__(FOOD_IMG)  self.rect.x = random.randint(50, 828)  self.rect.y = random.randint(38, 600) def update(self):  pass            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鹤岗市| 宣城市| 中宁县| 翼城县| 昌图县| 涪陵区| 桦甸市| 正镶白旗| 泰宁县| 怀柔区| 南康市| 冕宁县| 秦安县| 商南县| 兴文县| 莆田市| 永靖县| 堆龙德庆县| 泰州市| 成安县| 正安县| 朝阳区| 上栗县| 随州市| 温宿县| 星子县| 保定市| 宣武区| 商南县| 金沙县| 虎林市| 龙胜| 西充县| 集安市| 禹城市| 麻栗坡县| 星子县| 宜兴市| 阳谷县| 巍山| 高碑店市|