中山如何建网站,宁陵做网站的公司,949公社最新招聘今天,网站建设公司调研汇报ppt滑雪大冒险
《滑雪大冒险》是一款充满趣味性和挑战性的休闲竞技游戏#xff0c;在游戏中#xff0c;玩家将扮演一位勇敢的滑雪者#xff0c;在雪山上展示他们的滑雪技巧#xff0c;游戏采用2D图形界面#xff0c;以第三人称视角呈现 运行效果#xff1a;用方向键及方向键…滑雪大冒险
《滑雪大冒险》是一款充满趣味性和挑战性的休闲竞技游戏在游戏中玩家将扮演一位勇敢的滑雪者在雪山上展示他们的滑雪技巧游戏采用2D图形界面以第三人称视角呈现 运行效果用方向键及方向键的组合使用来控制游戏角色的移动 一主程序
import sys
import cfg
import pygame
import random滑雪者类
class SkierClass(pygame.sprite.Sprite):def __init__(self):pygame.sprite.Sprite.__init__(self)# 滑雪者的朝向(-2到2)self.direction 0self.imagepaths cfg.SKIER_IMAGE_PATHS[:-1]self.image pygame.image.load(self.imagepaths[self.direction])self.rect self.image.get_rect()self.rect.center [320, 100]self.speed [self.direction, 6-abs(self.direction)*2]改变滑雪者的朝向. 负数为向左正数为向右0为向前def turn(self, num):self.direction numself.direction max(-2, self.direction)self.direction min(2, self.direction)center self.rect.centerself.image pygame.image.load(self.imagepaths[self.direction])self.rect self.image.get_rect()self.rect.center centerself.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)设置为摔倒状态def setFall(self):self.image pygame.image.load(cfg.SKIER_IMAGE_PATHS[-1])设置为站立状态def setForward(self):self.direction 0self.image pygame.image.load(self.imagepaths[self.direction])
Function:障碍物类
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_pathself.image pygame.image.load(self.img_path)self.location locationself.rect self.image.get_rect()self.rect.center self.locationself.attribute attributeself.passed False移动def move(self, num):self.rect.centery self.location[1] - num创建障碍物
def createObstacles(s, e, num10):obstacles pygame.sprite.Group()locations []for i in range(num):row random.randint(s, e)col random.randint(0, 9)location [col*6420, row*6420]if location not in locations:locations.append(location)attribute random.choice(list(cfg.OBSTACLE_PATHS.keys()))img_path cfg.OBSTACLE_PATHS[attribute]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 ShowStartInterface(screen, screensize):screen.fill((255, 255, 255))tfont pygame.font.Font(cfg.FONTPATH, screensize[0]//5)cfont pygame.font.Font(cfg.FONTPATH, screensize[0]//20)title tfont.render(u滑雪大冒险, True, (255, 0, 0))content cfont.render(u按任意键开始游戏, True, (0, 0, 255))trect title.get_rect()trect.midtop (screensize[0]/2, screensize[1]/5)crect content.get_rect()crect.midtop (screensize[0]/2, screensize[1]/2)screen.blit(title, trect)screen.blit(content, crect)while True:for event in pygame.event.get():if event.type pygame.QUIT:pygame.quit()sys.exit()elif event.type pygame.KEYDOWN:returnpygame.display.update()显示分数
def showScore(screen, score, pos(10, 10)):font pygame.font.Font(cfg.FONTPATH, 30)score_text font.render(Score: %s % score, True, (0, 0, 0))screen.blit(score_text, pos)更新当前帧的游戏画面
def updateFrame(screen, obstacles, skier, score):screen.fill((255, 255, 255))obstacles.draw(screen)screen.blit(skier.image, skier.rect)showScore(screen, score)pygame.display.update()主程序
def main():# 游戏初始化pygame.init()pygame.mixer.init()pygame.mixer.music.load(cfg.BGMPATH)pygame.mixer.music.set_volume(0.4)pygame.mixer.music.play(-1)# 设置屏幕screen pygame.display.set_mode(cfg.SCREENSIZE)pygame.display.set_caption(滑雪大冒险)# 游戏开始界面ShowStartInterface(screen, cfg.SCREENSIZE)# 实例化游戏精灵# --滑雪者skier SkierClass()# --创建障碍物obstacles0 createObstacles(20, 29)obstacles1 createObstacles(10, 19)obstaclesflag 0obstacles AddObstacles(obstacles0, obstacles1)# 游戏clockclock pygame.time.Clock()# 记录滑雪的距离distance 0# 记录当前的分数score 0# 记录当前的速度speed [0, 6]# 游戏主循环while True:# --事件捕获for event in pygame.event.get():if event.type pygame.QUIT: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 1obstacles0 createObstacles(20, 29)obstacles AddObstacles(obstacles0, obstacles1)if distance 1280 and obstaclesflag 1:obstaclesflag 0distance - 1280for obstacle in obstacles0:obstacle.location[1] obstacle.location[1] - 1280obstacles1 createObstacles(10, 19)obstacles AddObstacles(obstacles0, obstacles1)for obstacle in obstacles:obstacle.move(distance)# --碰撞检测hitted_obstacles pygame.sprite.spritecollide(skier, obstacles, False)if hitted_obstacles:if hitted_obstacles[0].attribute tree and not hitted_obstacles[0].passed:score - 50skier.setFall()updateFrame(screen, obstacles, skier, score)pygame.time.delay(1000)skier.setForward()speed [0, 6]hitted_obstacles[0].passed Trueelif hitted_obstacles[0].attribute flag and not hitted_obstacles[0].passed:score 10obstacles.remove(hitted_obstacles[0])# --更新屏幕updateFrame(screen, obstacles, skier, score)clock.tick(cfg.FPS)run
if __name__ __main__:main()二配置文件 - cfg.py
配置文件
import osFPS
FPS 40
游戏屏幕大小
SCREENSIZE (640, 640)
图片路径
SKIER_IMAGE_PATHS [os.path.join(os.getcwd(), resources/images/skier_forward.png),os.path.join(os.getcwd(), resources/images/skier_right1.png),os.path.join(os.getcwd(), resources/images/skier_right2.png),os.path.join(os.getcwd(), resources/images/skier_left2.png),os.path.join(os.getcwd(), resources/images/skier_left1.png),os.path.join(os.getcwd(), resources/images/skier_fall.png)
]
OBSTACLE_PATHS {tree: os.path.join(os.getcwd(), resources/images/tree.png),flag: os.path.join(os.getcwd(), resources/images/flag.png)
}
背景音乐路径
BGMPATH os.path.join(os.getcwd(), resources/music/bgm.mp3)
字体路径
FONTPATH os.path.join(os.getcwd(), resources/font/FZSTK.TTF)三素材包 - resources
素材包大家根据配置文件自己配置就好
或者私信我发你
最后祝大家大雪节气快乐