#!/usr/bin/env python

#-*- coding:utf-8 -*-import pygame, sys, random

# 滑雪人的不同状态图片文件

skier_images= ["skier_down.png", "skier_right1.png", "skier_right2.png","skier_left2.png", "skier_left1.png"]

# 滑雪人的类classSkierClass(pygame.sprite.Sprite):

def __init__(self):

pygame.sprite.Sprite.__init__(self)

self.image= pygame.image.load("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

if self.angle > 2:

self.angle= 2center=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, 6 - abs(self.angle) * 2]returnspeed

def move(self, speed):

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

# 不能过边界if self.rect.centerx < 20:

self.rect.centerx= 20

if self.rect.centerx > 620:

self.rect.centerx= 620# 障碍物的类classObstacleClass(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

# 生产场景,每个障碍物有64见方的大小,避免太近

def create_map(start, end):

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]

# 避免重复的位置if not (location inlocations):

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)returnobstacles

# 重绘场景

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 inmap0:

obstacles.add(ob)for ob inmap1:

obstacles.add(ob)returnobstacles

# 初始化

pygame.init()

screen= pygame.display.set_mode([640,640]) # 窗口是640*640大小的

clock=pygame.time.Clock()

skier=SkierClass()

speed= [0, 6]

map_position= 0points= 0# 得分

map0= create_map(20, 29)

map1= create_map(10, 19)

activeMap= 0# 所有的物品

obstacles=updateObstacleGroup(map0, map1)

# 字体

font= pygame.font.Font(None, 50)

# 循环主事件whileTrue:

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)

elifevent.key ==pygame.K_RIGHT: # 按下右键

speed= skier.turn(1)

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

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

# 绘制新的场景 activeMap表示是否要产生新的地图if map_position >= 640 and activeMap == 0:

activeMap= 1map0= create_map(20, 29)

obstacles=updateObstacleGroup(map0, map1)if map_position >= 1280 and activeMap == 1:

activeMap= 0

for ob inmap0:

ob.location[1] -= 1280map_position-= 1280map1= create_map(10, 19)

obstacles=updateObstacleGroup(map0, map1)

# 滚动物品for obstacle inobstacles:

obstacle.scroll(map_position)

# 检测是否发生碰撞

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

# 撞到树时候发生的事情if hit[0].type == "tree" and not hit[0].passed:

points-= 100skier.image= pygame.image.load("skier_crash.png")

animate()

pygame.time.delay(1000)

skier.image= pygame.image.load("skier_down.png")

skier.angle= 0speed= [0, 6]

hit[0].passed =True

# 碰到旗子时候

elif hit[0].type == "flag" and not hit[0].passed:

points+= 10obstacles.remove(hit[0])

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

animate()

python能做什么游戏ll-一个简单的python game游戏相关推荐

  1. python垃圾分类图像识别算法_Python 实现一个简单的垃圾分类小游戏(已获校级二等奖)...

    作者:Vincentish https://blog.csdn.net/Vincentish/article/details/107495432 项目简介 本项目报名参加了"兖州中材杯&qu ...

  2. python框架实例,从零构建一个简单的 Python 框架

    为什么你想要自己构建一个 web 框架呢?我想,原因有以下几点: 你有一个新奇的想法,觉得将会取代其他的框架 你想要获得一些名气 你遇到的问题很独特,以至于现有的框架不太合适 你对 web 框架是如何 ...

  3. 编写python程序 兀 3_帮忙写一个简单的python程序π_π 要求就是图上的那样 其实挺简单的但我就是写不出来。拜托了,...

    展开全部 要求提的不是很明确,按照最简单的功能来做了. 只记录姓名和电话号码62616964757a686964616fe78988e69d8331333337626138,没有做号码检验.也没有做保 ...

  4. python类计算器开发_开发一个简单的python计算器

    详解: 1.str.split(分隔符):将str按分隔符进行切片,最后形成的是列表类型 eg: str = "Line1-abcdef \nLine2-abc \nLine4-abcd&q ...

  5. 用pygame做一个简单的python小游戏---贪吃蛇

    用pygame做一个简单的python小游戏-贪吃蛇 贪吃蛇游戏博客链接:(方法一样,语言不一样) c++贪吃蛇:https://blog.csdn.net/weixin_46791942/artic ...

  6. 用pygame做一个简单的python小游戏---七彩同心圆

    用pygame做一个简单的python小游戏-七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便加强一下pygame库的学习. 玩法:每次点击鼠标时,会以鼠标 ...

  7. 用pygame做一个简单的python小游戏---生命游戏

    用pygame做一个简单的python小游戏-生命游戏 生命游戏(Game of Life) 生命游戏(Game of Life)是剑桥大学约翰·何顿·康威(John Horton Conway)教授 ...

  8. python七彩同心圆_用pygame做一个简单的python小游戏---七彩同心圆

    用pygame做一个简单的python小游戏---七彩同心圆 用pygame做一个简单的python小游戏-七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便 ...

  9. python做一个简单的对战游戏

    今天没什么事情,就自己做了一个简单的对战游戏. 这个小游戏流程大概是这样的 开始游戏 ↓ 选择人物出场顺序及技能 ↓  ←  ←  ←  ←  ←  ←  ←  ←  ← ← ↖ 开始战斗→胜利方→+ ...

  10. python游戏最简单代码-如何利用Python开发一个简单的猜数字游戏

    前言 本文介绍如何使用Python制作一个简单的猜数字游戏. 游戏规则 玩家将猜测一个数字.如果猜测是正确的,玩家赢.如果不正确,程序会提示玩家所猜的数字与实际数字相比是"大(high)&q ...

最新文章

  1. 【PCL】基于法线的差异来分割点云
  2. MySQL-BETWEEN AND范围查询问题
  3. java zip malformed_关于Java解压文件的一些坑及经验分享(MALFORMED异常)
  4. Azkaban简介及安装教程
  5. Visual Studio Code 使用指南
  6. [滤镜]的firefox兼容问题
  7. mysql的表导入pgsql用_postgresql 导入数据库表并重设自增属性的操作
  8. (转)金融信息服务业的国际国内竞争格局及新动向
  9. Android时间与服务器同步方法
  10. 海康威视4路播放封装----安卓开发
  11. 扣丁三国 - 技术支持
  12. Cortex-M3 (NXP LPC1788)之PWM(脉宽调制器)
  13. 韩立刚计算机网络——第五章:应用层
  14. java读取properties文件连接数据库
  15. 如何把c语言编程成hex,怎么把c文件变成hex文件格式
  16. 表格,表单,文本域,下拉框,单选框,复选框,按钮
  17. 袁萌记忆中的华罗庚先生
  18. 电脑文件丢失你都是怎么找回来的?
  19. /MD 与 /MT、/MTD与/MDD的区别
  20. 11、git查看往日提交以及删除分支ID命令

热门文章

  1. LSM Tree 学习笔记——MemTable通常用 SkipList 来实现
  2. 浦东新区2019年下半年部分街镇社区工作者和部分单位编外人员公开招聘考试大纲...
  3. Django-form组件
  4. 【LeetCode】Palindrome Number(回文数)
  5. JAVA线程间的状态转换
  6. 2017秋-软件工程第十二次作业(三)-版本控制报告(个人)
  7. 嵌入式成长轨迹11 【嵌入式环境及基础】【Linux shell深入】【深入讨论】
  8. 请教visio-uml-活动图中动作状态和状态的区别谢谢 - 软件工程-管理 - 软件规划版...
  9. 那些陌生的C++关键字
  10. 2018-11-23随笔