我发现我上次更新已经是22天前了,然后呢我就来更新了

(听说一键3连的,会脱单暴富)

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, 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(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()

emmmmmmmm

还有一段

'''配置文件'''
import os'''FPS'''
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')

加我微信:zks2893533837

也可以去我主页下载

点个赞吧

pygame——滑雪(资源在末尾)相关推荐

  1. pygame做的著名游戏_用python写游戏之2D跑酷游戏(一)

    2D的跑酷游戏有很多,著名的例如Chrome的彩蛋小游戏,手机上的天天酷跑等. 打开Chrome浏览器输入 chrome://dino/,按空格激活彩蛋 这篇文章来分析一下这类横版跑酷游戏的主角奔跑, ...

  2. 运用Python+Pygame开发坦克大战游戏_版本V1.01

    这里写目录标题 一.项目整体说明 二.pygame下载方式 三.项目文件 1.坦克大战_框架_1.py 2.坦克大战_开始游戏_窗口设置_2.py 3.坦克大战_事件检测_3.py 4.坦克大战_基本 ...

  3. Android媒体解码MediaCodec,MediaExtractor

    Android提供了MediaPlayer播放器播放媒体文件,其实MediaPlyer只是对Android Media包下的MediaCodec和MediaExtractor进行了包装,方便使用.但是 ...

  4. mac安装java开发环境-包含JDK、Maven、Svn、Idea

    由于业务发展需要,换了一台mac pro,发现安装本地开发环境步骤比较多,问题较多,再此将本次安装遇到的问题记录下来,以便后续观看 下载与安装JDK 下载JDK JDK8.JDK11可点击获取,也可以 ...

  5. Windows 生物统计框架结构简介(WBF) (指纹识别技术)

    指纹识别技术在今天已经得到了越来越多的应用.在很多中.高端计算机中指纹识别设备已经成为了标配. 我发现很多计算机的指纹识别设备是闲置的,还有些设备虽然应用了,但是并没有得到正确的应用. 在前天下午.又 ...

  6. python游戏彩蛋_用python写游戏之2D跑酷游戏(一)

    2D的跑酷游戏有很多,著名的例如Chrome的彩蛋小游戏,手机上的天天酷跑等.打开Chrome浏览器输入 chrome://dino/,按空格激活彩蛋 这篇文章来分析一下这类横版跑酷游戏的主角奔跑,跳 ...

  7. C#利用开源库OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率

    最近做一个项目,需要监控到CPU温度,起初利用WMI方式去监测CPU温度,发现温度一直不变,于是各种问度娘,逛论坛,也没找到具体原因,大致意思就是我获取的是个假温度,这块行不通,只能换个方向,偶然看到 ...

  8. 解决verycd上不能下载资源的问题

    以下内容为转载:当时在verycd上搜索资料,但是下载不了,忽然看到这一篇文章,试了以下,果然可以下载.顺便记下以便后续使用. 唉, 我真的挺喜欢verycd的,好多好好的资源哟,尤其是杂志啊.设计素 ...

  9. 太空射击第17课: Game Over (結束)

    太空射击第17课: Game Over (結束) 在本课中,我们将通过添加"游戏结束"屏幕和再次玩游戏的功能来完成游戏. 视频 您可以在此处观看本课程的视频: 游戏结束 现在,当我 ...

最新文章

  1. kvm上添加万兆网卡_部署kvm(二)
  2. [改善Java代码] 避免instanceof非预期结果
  3. 【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA | 示例 ) ★★
  4. 剑指offer:约瑟夫环的问题
  5. 信息学奥赛一本通 1216:红与黑 / OpenJudge NOI 2.5 1818
  6. 通过接口字段名称反向猜测数据库列名
  7. 【hortonworks/registry】诡异问题之启动了却无法访问
  8. 软件设计师学习2——程序设计语言基础知识
  9. 手写简化版printf函数
  10. java jndi jboss_jboss结合spring中如何配置jndi
  11. 百度文库免费复制文字_我们有2种通过鼠标右键复制百度文库的方法要告诉你...
  12. win10-ubuntu-软件配置-开机root无密码-风扇转速调节
  13. 苹果电脑可以装windows系统吗_给苹果电脑安装Windows系统
  14. 成考计算机专业难不难,成人高考计算机类难度大吗(成人大学难度)
  15. matlab的程序设计心得和体会,程序设计心得体会(多篇).doc
  16. 腾讯课堂直播: 手把手教你开发《3D街头篮球》
  17. 如何实现简单的随机点名
  18. ettercap的应用:DNS欺骗
  19. 如何评价蚂蚁的ant-design-vue UI框架
  20. js判断客户端是PC端还是移动端访问

热门文章

  1. ElasticSearch——刷盘原理流程
  2. web实训知识点_0326
  3. 3d pool ball android,Ball Pool 3D
  4. [HT/NHT/DQ]-三种基于EMD的瞬时频率计算方法的比较
  5. c#网页自动化脚本语言,C#.NET实现网页自动登录的方法
  6. 你与3D打印模型设计大师之间,只差这一点细节!
  7. ckeditor从word粘贴图片
  8. 学好程序员必知必会的数据结构,这一份书单你值得拥有!
  9. 腾讯某安全工程师因好奇入侵酒店WiFi系统,遭安全局逮捕并处罚金
  10. 【数据分析可视化】各国商店-小试牛刀