该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

import pygame, sys, random # 所需要加载的模块

skier_images = ["skier_down.png","skier_right1.png", #加载所需要的人物图像

"skier_right2.png","skier_left2.png",

"skier_left1.png"]

class SkierClass(pygame.sprite.Sprite):

def __init__(self):

pygame.sprite.Sprite.__init__(self)

self.image = pygame.image.load("c:\\skier_down.png") # 获取人物图像

self.rect = self.image.get_rect() # 获取人物形象

self.rect.center = [320,100] # 人物的起始位置

self.angle = 0

def turn(self, direction): # 方向

self.angle = self.angle + direction # 角度+ 方向

if self.angle < -2: self.angle = -2 # 向左右只允许转2次

if self.angle > 2: self.angle = 2

center = self.rect.center

self.image = pygame.image.load(skier_images[self.angle])

self.rect = self.image.get_rect()

self.rect.center = center

speed = [self.angle, 10 - abs(self.angle) * 2] #左右移动后的速度

return speed

def move(self, speed): # 移动 左右移动

self.rect.centerx = self.rect.centerx + speed[0]

if self.rect.centerx < 20: self.rect.centerx = 20 #向左移动至 起始位置20 或向右移动至终止位置620

if self.rect.centerx > 620: self.rect.centerx = 620

class ObstacleClass (pygame.sprite.Sprite): #创建树和小旗

def __init__(self, image_file, location, type):

pygame.sprite.Sprite.__init__(self)

self.image_file = image_file

self.image = pygame.image.load(image_file)

self.location = location

self.rect = self.image.get_rect()

self.rect.center = location

self.type = type

self.passed = False

def scroll(self, terrainPos):

self.rect.centery = self.location[1] - terrainPos # 让场景向上移动

def create_map(start, end): # 创建一个“画面”地形:640×640.使用的64×64像素的“块”,这样的对象不是靠得太近

obstacles = pygame.sprite.Group()

locations = []

gates = pygame.sprite.Group()

for i in range(10): # 每屏10障碍

row = random.randint(start, end)

col = random.randint(0, 9)

location = [col * 64+20, row * 64+20]# 中心的x,y的障碍

if not (location in locations): # 避免在同一个地方2的障碍

locations.append(location)

type = random.choice(["tree", "flag"])

if type == "tree": img = "skier_tree.png" # 定义调用树的图

elif type == "flag": img = "skier_flag.png" # 定义调用旗的图

obstacle = ObstacleClass(img, location, type)

obstacles.add(obstacle)

return obstacles

def animate(): # 重绘屏幕,包括所有的元素

screen.fill([255, 255, 255]) #屏幕填充色

pygame.display.update(obstacles.draw(screen)) # 显示更新障碍

screen.blit(skier.image, skier.rect) #滑雪者图像

screen.blit(score_text, [10, 10]) # 比例

pygame.display.flip() #显示屏转动

def updateObstacleGroup(map0, map1):

obstacles = pygame.sprite.Group()

for ob in map0: obstacles.add(ob) #添加障碍

for ob in map1: obstacles.add(ob) #添加障碍

return obstacles

pygame.init() # 初始化示例

screen = pygame.display.set_mode([640,640]) # 初始化显示状态

clock = pygame.time.Clock() # 初始化时间

skier = SkierClass() # 初始化类型

speed = [0, 6] #初始化速度

map_position = 0

points = 0

map0 = create_map(20, 29) # 创建地图1

map1 = create_map(10, 19) # 创建地图2

activeMap = 0 # 激活地图

obstacles = updateObstacleGroup(map0, map1) #地图分数

font = pygame.font.Font(None, 50) # 所有障碍做碰撞检测

while True: # 开始地图循环

clock.tick(30) # 每秒更新地图的次数

for event in pygame.event.get():

if event.type == pygame.QUIT: sys.exit()

if event.type == pygame.KEYDOWN: # 检查按键

if event.key == pygame.K_LEFT: # 左箭头向左转

speed = skier.turn(-1)

elif event.key == pygame.K_RIGHT: # 右箭头向右转

speed = skier.turn(1)

skier.move(speed) # 移动滑雪者

map_position += speed[1] # 滚动场景

# 管理地图之间进行切换,并在底部创建新的地形

if map_position >=640 and activeMap == 0:

activeMap = 1

map0 = create_map(20, 29) # 创建地图

obstacles = updateObstacleGroup(map0, map1) # 更新地图障碍

if map_position >=1280 and activeMap == 1:

activeMap = 0

for ob in map0:

ob.location[1] = ob.location[1] - 1280 # 环绕顶部

map_position = map_position - 1280 # 地图位置

map1 = create_map(10, 19) # 创建地图

obstacles = updateObstacleGroup(map0, map1)

for obstacle in obstacles:

obstacle.scroll(map_position)

# 检查是否碰到数或小旗

hit = pygame.sprite.spritecollide(skier, obstacles, False)

if hit:

if hit[0].type == "tree" and not hit[0].passed: #撞到树

points = points - 100 # 撞树后扣掉100分

skier.image = pygame.image.load("skier_crash.png") # 创建跌倒图

animate()

pygame.time.delay(100)

skier.image = pygame.image.load("skier_down.png") # 恢复滑雪图

skier.angle = 0

speed = [0, 6]

hit[0].passed = True

elif hit[0].type == "flag" and not hit[0].passed: # 撞到旗子标志

points += 100 # 撞旗后加100分

obstacles.remove(hit[0]) # 删除旗子标志

score_text = font.render("Score: " +str(points), 1, (0, 0, 0))

animate()

父与子python下载不了_【求助】看父与子学习Python,里面有一个滑雪小游戏,加载不出图...相关推荐

  1. 如何找到python廖雪峰基础_为什么看不懂廖雪峰的Python学习教程?

    先不要怀疑自己的智商,也许是你完全没有编程基础,这个时候,可以选个视频课程看看,B站还有各路公开课上有很多,自己找找. 或者觉得这样有点麻烦,那就花点钱,买个基础入门课程学学,试试下面的链接. 我觉得 ...

  2. Python开发一个滑雪小游戏

    擅长领域:Python开发一个小游戏 今日重点:一步步分析and越过亚马逊的反爬虫机制 一.如何搭建开发环境环境 一起来学pygame吧 游戏开发30例(开篇词)--环境搭建+游戏效果展示 windo ...

  3. 请用python编写一个斗地主小游戏,并给出完整代码

    很高兴为您服务!这是一个使用Python编写的斗地主小游戏的完整代码:# 导入必备模块 import random# 定义一副牌 poker = ['A', 2, 3, 4, 5, 6, 7, 8, ...

  4. python数值运算实例_“每天进步一点点”案例学习python数值操作

    这是树哥讲python系列的第四篇文章. 本质上计算机熟悉的是二进制,也就是我们常说的"0,1"代码,所以无论是执行的命令还是数据本身,都必须转化为0和1他们才会认知.而我们熟悉的 ...

  5. python交流企鹅裙_动漫迷的福利!Python小白也可以学会的爬虫教程

    前言 有一段没用 python 了,我也不知道自己为什么对 python 越来越淡,可能自己还是比较喜欢 android ,毕竟自己第一次接触编程就是 android,为了android学java,然 ...

  6. python动漫教程_动漫迷的福利!Python小白也可以学会的爬虫教程

    前言 有一段没用 python 了,我也不知道自己为什么对 python 越来越淡,可能自己还是比较喜欢 android ,毕竟自己第一次接触编程就是 android,为了android学java,然 ...

  7. python下载无法安装_各种版本的python下载安装教程

    关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明明只是灵武七重,而在这两个月不到的时间,连跳两重修为,又跳过一个大境界,踏入了元武一 ...

  8. python下载安装教程-一招解决:各种版本的Python下载安装教程

    原标题:一招解决:各种版本的Python下载安装教程 python从17年开始大火,自然想学python的同学就多了,小编整理了这篇文章,从python的功能介绍.各系统最新版本python下载.py ...

  9. 零基础python入门书籍推荐书目_铁粉看过来!送书啦,Python推荐书单,送书10本!...

    原标题:铁粉看过来!送书啦,Python推荐书单,送书10本! 上个月送书福利不断,一波接一波,今天小编带来了一份非常不错的Python书单,非常感谢博文视点的大力支持,这次的书涉及Python入门, ...

最新文章

  1. linux字符界面教程,打造字符界面的多媒体Linux系统
  2. Eclipse调试Bug的七种常用技巧(转)
  3. 【mysql学习】疑问点记录
  4. 第七节 VMware View 6.0 菜鸟入门 Composer 安装和部署
  5. java Switch里面的类型问题
  6. 春节期间,我用责任链模式重构了业务代码
  7. Unity3D 的物理渲染和光照模型
  8. 换一种态度看程序员(转)
  9. number string java_java基础系列(一):Number,Character和String类及操作
  10. 文件操作:fseek函数和ftell函数
  11. ffmpeg实现摄像头拉流_ffmpeg推流拉流的几种方式
  12. python打造微信聊天机器人_求问各位大佬,如何用Python写一款微信聊天机器人?...
  13. 【Swift】401状态处理流程
  14. 关于arctanx的麦克劳林展开式推导
  15. Android Bluetooth蓝牙scan过程
  16. 2019年8月21日 星期三(韩天峰的个人简历)
  17. 56 案例淘宝焦点图布局 网页布局总结
  18. 【微服务】分布式如何利用Skywalking实现链路追踪与监控?
  19. MoveIt机械臂控制——(一)基本配置步骤
  20. 小程序怎么把同名文件的前端数据(wxml)传送到后端(js)

热门文章

  1. android 支付宝 地图,利用百度地图实现支付宝“到位”功能(地图模式)
  2. [CTSC2018]暴力写挂
  3. 搭建php服务器网站
  4. java.lang.InstantiationException: DWR can't find a spring config. See the logs for solutions
  5. 设置div绝对定位+居中
  6. 信息安全学习笔记--CSRF
  7. pthread_join pthread_exit 线程 Linux函数 线程退出 线程等待
  8. mug网络用语_各种游戏术语
  9. 部分iPhone13 系统有bug
  10. npm install -g cnpm --registry=https://registry.npm.taobao.org报警告