本文实例为大家分享了python实现滑雪游戏的具体代码,供大家参考,具体内容如下
# coding: utf-8 # 滑雪小游戏 import sys import pygame import random from pygame.locals import * # 滑雪者类 class SkierClass(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) # 滑雪者的朝向(-2到2) self.direction = 0 self.imgs = ["./images/skier_forward.png", "./images/skier_right1.png", "./images/skier_right2.png", "./images/skier_left2.png", "./images/skier_left1.png"] self.person = pygame.image.load(self.imgs[self.direction]) self.rect = self.person.get_rect() self.rect.center = [320, 100] self.speed = [self.direction, 6-abs(self.direction)*2] # 改变滑雪者的朝向 # 负数为向左,正数为向右,0为向前 def turn(self, num): self.direction += num self.direction = max(-2, self.direction) self.direction = min(2, self.direction) center = self.rect.center self.person = pygame.image.load(self.imgs[self.direction]) self.rect = self.person.get_rect() self.rect.center = center self.speed = [self.direction, 6-abs(self.direction)*2] return self.speed # 移动滑雪者 def move(self): self.rect.centerx += self.speed[0] self.rect.centerx = max(20, self.rect.centerx) self.rect.centerx = min(620, self.rect.centerx) # 障碍物类 # Input: # -img_path: 障碍物图片路径 # -location: 障碍物位置 # -attribute: 障碍物类别属性 class ObstacleClass(pygame.sprite.Sprite): def __init__(self, img_path, location, attribute): pygame.sprite.Sprite.__init__(self) self.img_path = img_path self.image = pygame.image.load(self.img_path) self.location = location self.rect = self.image.get_rect() self.rect.center = self.location self.attribute = attribute self.passed = False # 移动 def move(self, num): self.rect.centery = self.location[1] - num # 创建障碍物 def create_obstacles(s, e, num=10): obstacles = pygame.sprite.Group() locations = [] for i in range(num): row = random.randint(s, e) col = random.randint(0, 9) location = [col*64+20, row*64+20] if location not in locations: locations.append(location) attribute = random.choice(["tree", "flag"]) img_path = './images/tree.png' if attribute=="tree" else './images/flag.png' obstacle = ObstacleClass(img_path, location, attribute) obstacles.add(obstacle) return obstacles # 合并障碍物 def AddObstacles(obstacles0, obstacles1): obstacles = pygame.sprite.Group() for obstacle in obstacles0: obstacles.add(obstacle) for obstacle in obstacles1: obstacles.add(obstacle) return obstacles # 显示游戏开始界面 def Show_Start_Interface(Demo, width, height): Demo.fill((255, 255, 255)) tfont = pygame.font.Font('./font/simkai.ttf', width//4) cfont = pygame.font.Font('./font/simkai.ttf', width//20) title = tfont.render(u'滑雪游戏', True, (255, 0, 0)) content = cfont.render(u'按任意键开始游戏', True, (0, 0, 255)) trect = title.get_rect() trect.midtop = (width/2, height/10) crect = content.get_rect() crect.midtop = (width/2, height/2.2) Demo.blit(title, trect) Demo.blit(content, crect) pygame.display.update() while True: for event in pygame.event.get(): if event.type == QUIT: sys.exit() elif event.type == pygame.KEYDOWN: return # 主程序 def main(): ''' 初始化 ''' pygame.init() # 声音 pygame.mixer.init() pygame.mixer.music.load("./music/bg_music.mp3") pygame.mixer.music.set_volume(0.4) pygame.mixer.music.play(-1) # 屏幕 screen = pygame.display.set_mode([640, 640]) pygame.display.set_caption('滑雪游戏-公众号:Charles的皮卡丘') # 主频 clock = pygame.time.Clock() # 滑雪者 skier = SkierClass() # 记录滑雪的距离 distance = 0 # 创建障碍物 obstacles0 = create_obstacles(20, 29) obstacles1 = create_obstacles(10, 19) obstaclesflag = 0 obstacles = AddObstacles(obstacles0, obstacles1) # 分数 font = pygame.font.Font(None, 50) score = 0 score_text = font.render("Score: "+str(score), 1, (0, 0, 0)) # 速度 speed = [0, 6] Show_Start_Interface(screen, 640, 640) ''' 主循环 ''' # 更新屏幕 def update(): screen.fill([255, 255, 255]) pygame.display.update(obstacles.draw(screen)) screen.blit(skier.person, skier.rect) screen.blit(score_text, [10, 10]) pygame.display.flip() while True: # 左右键控制人物方向 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT or event.key == pygame.K_a: speed = skier.turn(-1) elif event.key == pygame.K_RIGHT or event.key == pygame.K_d: speed = skier.turn(1) skier.move() distance += speed[1] if distance >= 640 and obstaclesflag == 0: obstaclesflag = 1 obstacles0 = create_obstacles(20, 29) obstacles = AddObstacles(obstacles0, obstacles1) if distance >= 1280 and obstaclesflag == 1: obstaclesflag = 0 distance -= 1280 for obstacle in obstacles0: obstacle.location[1] = obstacle.location[1] - 1280 obstacles1 = create_obstacles(10, 19) obstacles = AddObstacles(obstacles0, obstacles1) # 用于碰撞检测 for obstacle in obstacles: obstacle.move(distance) # 碰撞检测 is_hit = pygame.sprite.spritecollide(skier, obstacles, False) if is_hit: if is_hit[0].attribute == "tree" and not is_hit[0].passed: score -= 50 skier.person = pygame.image.load("./images/skier_fall.png") update() # 摔倒后暂停一会再站起来 pygame.time.delay(1000) skier.person = pygame.image.load("./images/skier_forward.png") skier.direction = 0 speed = [0, 6] is_hit[0].passed = True elif is_hit[0].attribute == "flag" and not is_hit[0].passed: score += 10 obstacles.remove(is_hit[0]) score_text = font.render("Score: "+str(score), 1, (0, 0, 0)) update() clock.tick(40) if __name__ == '__main__': main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]