发现学了一遍外星人,就有些没记住,那我还是把作业题做一遍。

首先我就发现我之前装的pygame,每次都要重新导入一下,模块里面没有。
【文件】->【设置】->【Project Interpreter】->没有的话就,右边【+】

搜一下,搜出来了按右下角【Install Package】

还有一个编辑图片分辨率方法:
图片右键【打开方式】-> 【画图】->【重新调整大小】

RGB值颜色查询表,可以百度。

更逼真的星星

来源:《Python编程 从入门到实践》13-2
就没用星星,也不太想p背景,于是选了纯白的图片,顺便用一下下最近偶像的图片,这就是我的满天星星。(转侵删)

blingbling.py

import pygamefrom settings import Settings
from pygame.sprite import Group
import functions as fdef bling():pygame.init() # 初始化sets = Settings() # 获取设置screen = pygame.display.set_mode((sets.screen_width, sets.screen_height)) # 获取屏幕pygame.display.set_caption("KiKi") # 标题stars = Group()f.create_group(screen, sets, stars)while True:f.check_quit() #检测退出f.update_screen(screen, sets, stars) #刷新屏幕bling()

settings.py

import pygameclass Settings():def __init__(self):self.screen_width = 800self.screen_height = 600self.screen_color = (255, 255, 255) # 纯白self.star_image = pygame.image.load('image/kiki.bmp')

stars.py

from pygame.sprite import Sprite # 精灵类class Star(Sprite):def __init__(self, screen, sets):super(Star, self).__init__()self.sets = setsself.screen = screenself.image = sets.star_imageself.rect = self.image.get_rect()self.screen_rect = screen.get_rect()self.rect.x = self.rect.widthself.rect.y = self.rect.heightself.x = float(self.rect.x)def print_star(self):self.screen.blit(self.image, self.rect)

functions.py

import sys
import pygame
from star import Star
from random import randintdef check_quit():for event in pygame.event.get():  # 获取鼠标键盘操作if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:if event.key == pygame.K_q:sys.exit()def update_screen(screen, sets, stars):screen.fill(sets.screen_color)  # 填充屏幕颜色stars.draw(screen)pygame.display.flip()  # 使屏幕可见def create_group(screen, sets, stars):star = Star(screen, sets)star_width = star.rect.widthstar_height = star.rect.heightnumber_x = int(sets.screen_width / 3 / star_width)number_y = int(sets.screen_height / 2 / star_height)for y in range(number_y):for x in range(number_x):star = Star(screen, sets)p = randint(-20, 20)star.x = (3*x+1) * star_width + pstar.y = (2*y+1) * star_height + pstar.rect.x = star.xstar.rect.y = star.ystars.add(star)

结果

期间报错:‘Star’ object has no attribute ‘_Sprite__g’

就是在Star类里面忘了继承父类的初始化函数。(star.py第五行)

连绵细雨

来源:《Python编程 从入门到实践,13-4

依旧为我的星星打call。

ranning.py

import functions as f
from setting import set
import pygame
from pygame.sprite import Group
from rain import Raindef run_rain():pygame.init()sets = set()screen = pygame.display.set_mode((sets.back_width, sets.back_height))pygame.display.set_caption("What a raning day")rains = Group()f.create_rains(sets, screen, rains)while True:f.check_event()f.update_screen(screen, sets, rains)run_rain()

setting.py

import pygameclass set():def __init__(self):self.back_image = pygame.image.load('kiki2.bmp')self.rect = self.back_image.get_rect()self.back_width = self.rect.widthself.back_height = self.rect.heightself.rain_image = pygame.image.load('rain2.bmp')self.rain_speed = 1self.rain_distant = 50

rain.py

import pygame
from pygame.sprite import Spriteclass Rain(Sprite):def __init__(self, sets, screen):super(Rain, self).__init__()self.sets = setsself.screen = screenself.speed = sets.rain_speedself.image = sets.rain_imageself.rect = self.image.get_rect()def print_rain(self):self.screen.blit(self.image, self.rect)

functions.py

import sys
import pygame
from rain import Raindef check_event():for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()if event.type == pygame.KEYDOWN:if event.key == pygame.K_q:sys.exit()def update_screen(screen, sets, rains):screen.blit(sets.back_image, sets.rect)drop_rains(sets, rains)update_rains(rains, sets)rains.draw(screen)pygame.display.flip()def create_rains(sets, screen, rains):num_x = int(sets.back_width / sets.rain_distant)num_y = int(sets.back_height / sets.rain_distant)for k in range(num_y):for p in range(num_x):rain = Rain(sets, screen)x = (p+1) * sets.rain_distanty = k * sets.rain_distantrain.rect.x = xrain.rect.y = yrains.add(rain)def drop_rains(sets, rains):for rain in rains.sprites():rain.rect.y += sets.rain_speeddef update_rains(rains, sets):for rain in rains.copy():if rain.rect.bottom >= sets.back_height:rain.rect.y = 0 # 变为0重新开始下落#print(len(rains))

结果

【Python】【pygame】更逼真的星星、连绵细雨相关推荐

  1. (第2版)Python编程从入门到实践_外星人项目习题13-1-13-2答案更逼真的星星_pygame练习题_python项目练习题

    13_1-13_2  图片命名:star.png,在上述代码文件夹中,新建文件夹images,将图片放置在新文件夹即可  13_1 星星主程序: import sysimport pygamefrom ...

  2. PYTHON 作业连绵细雨

    连绵细雨:使得雨滴消失在屏幕底端,从屏幕上端重新降落雨滴. 主函数 Waters water 类函数 settings 相关的设置 game_functions 功能函数 运行效果 连绵不断的动图

  3. python之Turtle 画星星和樱花

    python之Turtle 画星星和樱花 1. 樱花 1.1 基础版 1.1.1 基础版效果图 1.1.2 主要算法 1.1.3 完整代码 1.2 升级版 1.2.1 效果图 1.2.2 主要算法 1 ...

  4. Python pygame 坦克大战

    Python pygame 坦克大战 import pygame, time, random from pygame.sprite import SpriteSCREEN_WIDTH = 750 SC ...

  5. PYTHON pygame库实战——实现双人弹球小游戏

    PYTHON pygame实战--运用pygame库实现双人弹球小游戏 使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截 ...

  6. python pygame 简单小游戏

    python pygame 简单小游戏 最近学习了pygame,感觉十分有意思,花了一点时间制作了一个简单的小游戏 效果图 这是一个很简单的防守类小游戏 玩家可以使用wasd控制人物移动,并且鼠标控制 ...

  7. 保姆级教学——Python+Pygame怎么实现吃豆豆游戏

    耽搁十几天的时间,我顺利的从阳转阴啦, 以后的日子一切恢复正常,好好工作,积极分享.希望在座的小伙伴阳了的全部健康转阴,没阳的全部不会变阳,新的一年,一切顺顺利利. 不知道最近大家学习得怎么样?有没有 ...

  8. 小甲鱼python游戏代码_【小甲鱼】零基础学习python pygame 飞机大战可执行源代码...

    [实例简介] [小甲鱼]零基础学习python pygame 飞机大战可执行源代码,觉得挺有意思,故此分享. [实例截图] [核心代码] 飞机大战 └── 飞机大战 ├── bullet.py ├── ...

  9. python +pygame 制作五子连珠小游戏

    python +pygame 制作五子连珠小游戏 学习python半年了,今天分享一个利用pygame制作的五子连珠游戏. 一.代码: 1.球类,ball.py """ ...

  10. python pygame实战《飞船大战外星人》

    学了一个月的python,最后两天学了下pygame,以一个小游戏结尾这段旅程. 游戏规则如下: 玩家可以通过上下左右四个键控制飞船移动,而且按住键不放可以联系移动,而不需要不断地按键松键来控制. 玩 ...

最新文章

  1. TVM性能评估分析(七)
  2. 【PySlowFast】Facebook开源算法代码库PySlowFast,轻松复现前沿视频理解模型
  3. Hystrix 资料简单梳理
  4. oracle数据库 append,oracle中insert,copy,insert append执行对比
  5. mysql 任务计划 /etc/cron.d_Linux /etc/cron.d增加定时任务
  6. redis smembersmap_redis 基本指令以及数据类型
  7. javascript 面试题之一
  8. Spring Cloud 中的@FeignClient注解中的contextId属性
  9. win7右键我的电脑管理菜单失效的解决办法
  10. [SOA] Mule ESB 3.x 入门(二)—— 配置(spring, properties, log4j)
  11. 一键开关机电路图解析
  12. css写七步诗,《七步诗》改写550字
  13. weex实现文本省略效果
  14. HDD硬盘securityATAerase事故(HDD被LOCKED)
  15. html5 3d自动,html5 3D微信头像自动抽奖代码
  16. python必备库 学习笔记 matplotlib
  17. python 中正无穷,负无穷的表示
  18. html字体怎么变大,网页字体怎么变大(html怎么改字体类型)
  19. Android内核三大核心功能之一AMS内部原理
  20. error:expected '{' at end of input

热门文章

  1. Fabric chaincode shim.ChaincodeStubInterface
  2. 从原理上解释什么是DDR的ZQ校准?
  3. Struts-2.3.24.1官方例子-struts2-blank
  4. 小工具--理财计算器
  5. 神经网络中_,predicted=中_,的作用
  6. 职场干货 | 如何让你的自我介绍,快速打动面试官
  7. php cms下载地址,让PHPCMS下载内容页显示链接真实地址
  8. c++ primer plus编程练习题参考第六章
  9. 【技术】怎么将PPT中的白底图片,白色部分变透明?
  10. Jetpack Compose - CircularProgressIndicator、LinearProgressIndicator