根据书中的代码自己敲上去的,顺便把图片也附上。后面的章节会有对这个代码的解释,到时再来细说。

import pygame,sys,randomskier_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('skier_down.png')self.rect = self.image.get_rect()self.rect.center = [320,100]self.angle = 0def turn(self,direction):self.angle = self.angle + directionif self.angle < -2: self.angle = -2if self.angle >  2: self.angle =  2center = self.rect.centerself.image = pygame.image.load(skier_images[self.angle])self.rect = self.image.get_rect()self.rect.center = centerspeed = [self.angle,6 - abs(self.angle) * 2]return speeddef move(self,speed):self.rect.centerx = self.rect.centerx +speed[0]if self.rect.centerx < 20: self.rect.centerx = 20if self.rect.centerx >620: self.rect.centerx = 620class ObstacleClass(pygame.sprite.Sprite):def __init__(self,image_file,location,type):pygame.sprite.Sprite.__init__(self)self.image_file = image_fileself.image = pygame.image.load(image_file)self.rect = self.image.get_rect()self.rect.center = locationself.type = typeself.passed = Falsedef update(self):global speedself.rect.centery -= speed[1]if self.rect.centery < -32:self.kill()def create_map():global obstacleslocations = []for i in range(10):row = random.randint(0,9)col = random.randint(0,9)location = [col *64 +20,row * 64 + 20 +640]if not (location in  locations):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)def animate():screen.fill([255,255,255])obstacles.draw(screen)screen.blit(skier.image,skier.rect)screen.blit(score_text,[10,10])pygame.display.flip()pygame.init()
screen = pygame.display.set_mode([640,640])
clock = pygame.time.Clock()
skier = SkierClass()
speed = [0,6]
obstacles = pygame.sprite.Group()
map_position = 0
points = 0
create_map()
font = pygame.font.Font(None,50)running = True
while running:clock.tick(30)for event in pygame.event.get():if event.type == pygame.QUIT:running = Falseif 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:create_map()map_position = 0hit = pygame.sprite.spritecollide(skier,obstacles,False)if hit:if hit[0].type == 'tree' and not hit[0].passed:points =points - 100skier.image = pygame.image.load('skier_down.png')skier.angle = 0speed = [0,6]hit[0].passed = Trueelif hit[0].type == 'flag' and not hit[0].passed:points +=10hit[0].kill()obstacles.update()score_text = font.render('Score:'+str(points),1,(0,0,0))animate()
pygame.quit()








学习总结-《父与子的编程之旅》chapter 10相关推荐

  1. 父与子的编程之旅 python 3 pdf_《父与子的编程之旅》嵌套循环例题解析

    <父与子的编程之旅>,11.4可变嵌套循环的问题解答. numBlocks 书里是Python2.X,我的是Python3.X,原理没有差别. 分析如下: 0.手动输入input 当 in ...

  2. #父与子的编程之旅#第八章

    新年第一篇,新年快乐!不废话,直接入正题! <父与子的编程之旅与小卡特一起学python>这本书真的比较通俗易懂好上手,是编程小白的最佳选择!(编者看到记得给我广告费) 第八章主要讲循环. ...

  3. 父与子的编程之旅--easygui无法使用

    阅读<父与子的编程之旅>根据书中内容在www.helloworldbook2.com中下载了Python2.7,书中说使用本书的安装程序便安装上了Easygui,但是在IDLE中执行imp ...

  4. 学习总结-《父与子的编程之旅》chapter 1

    该章主要介绍python的安装和运行. 书中使用的是python2.7.3版本,然而在学习和编程练习中,我使用的是python3.6,这样在练习的工程中也能熟悉一下python2和3的一些区别. 1. ...

  5. 学习总结-《父与子的编程之旅》chapter 11

    本章学习嵌套与可变循环 ###11.1 嵌套循环 比如要实现打印3个乘法表,就是一个简单的嵌套循环例子.对外循环的每次迭代,内循环都要完成它的所有迭代. ###11.2 可变循环 如果在一个for循环 ...

  6. 学习总结-《父与子的编程之旅》chapter 6

    通过运用EasyGui,简单的了解一下什么是GUI(图形用户界面),并进行简单的使用练习. 6.1什么是GUI GUI是Graphical User Interface的缩写,其中包括键入文本和返回文 ...

  7. 学习总结-《父与子的编程之旅》chapter 20

    这一章中,我们将了解如何使用 PyQt 建立 GUI,它能为你提供更多灵活性,可以对程序的外观有更多控制. 写一个 GUI 程序大体上可以分为两个主要部分.你需要创建用户界面本身 (UI),然后编写代 ...

  8. 学习总结-《父与子的编程之旅》chapter 14

    本章主要讲对象. 此篇往后 先只附上代码示例,内容之后有空再来填补. 示例: class Hot_dog:def __init__(self):self.cooked_level = 0self.co ...

  9. 《父与子的编程之旅——Python》(一)序章-第一章-第二章

    Python在作者的口中是一种比较简单的编程语言,但是作为一名初学者,我还是选择了这样一本"陪小朋友"一起学习Python的教学书,一步步来吧 1.2从IDLE启动Python 启 ...

  10. 父与子一起学python3,父与子的编程之旅 与小卡特一起学Python 第3版(全彩印刷)...

    章 出发吧 1 1.1 安装Python 1 1.2 从IDLE启动Python 2 1.3 来点指令吧 3 1.4 与Python交互 5 1.5 该编程了 7 1.6 运行你的个程序 9 1.7 ...

最新文章

  1. 《预训练周刊》第7期:傅立叶图像变换器解析、阿里达摩院发布最大中文预训练语言模型PLUG
  2. jquery的ajax()函数传值中文乱码解决方法介绍
  3. xp系统开机自检很久_电脑开机不能自检的五大原因
  4. Erlang打包工具rebar安装使用
  5. java中div的用法,Java Math floorDiv()用法及代码示例
  6. 数据治理常见的误区有哪些
  7. 中秋福利!开源基础设施峰会9折票!另有限量免费门票!
  8. JAVA JSP网上订餐系统JSP餐厅点餐系统源码JSP点餐系统JSP网上订餐系统JSP在线订餐系统
  9. python的指令大全_python列表命令
  10. CentOS7安装Teamviewer
  11. Spring Cloud (四):断路器(Hystrix)
  12. 利用threading多线程爬取王者荣耀的高清壁纸
  13. 一万块的iPhone X来了,你看好苹果的黑科技吗?
  14. 嵌入式工作会越来越少吗?
  15. 2022光伏行业最具创新力品牌服务商50强榜单公布 | 美通社头条
  16. 百度Java二面面经
  17. SQL注入及其危害、防御手段
  18. 大数据的流处理和批处理及其框架
  19. warning:iteration 7 invokes undefined behavior
  20. iOS7适配问题总结

热门文章

  1. Mac 如何安装 Mysql@5.7
  2. USB转TTL、USB转232的区别
  3. esxi6.7封装nvme驱动
  4. python控制台清屏_python清屏命令
  5. 《信号与系统学习笔记》—信号与系统的时域和频域特性(一)
  6. Java通过 JDBC 连接数据库操作
  7. 模糊算法 matlab,几种模糊控制算法的MATLAB仿真.pdf
  8. c语言课程设计参考,c语言课程设计参考
  9. matlab在神经网络中的应用,应用matlab实现神经网络
  10. CCNA学习指南第十章