【Python】【pygame】更逼真的星星、连绵细雨
发现学了一遍外星人,就有些没记住,那我还是把作业题做一遍。
首先我就发现我之前装的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】更逼真的星星、连绵细雨相关推荐
- (第2版)Python编程从入门到实践_外星人项目习题13-1-13-2答案更逼真的星星_pygame练习题_python项目练习题
13_1-13_2 图片命名:star.png,在上述代码文件夹中,新建文件夹images,将图片放置在新文件夹即可 13_1 星星主程序: import sysimport pygamefrom ...
- PYTHON 作业连绵细雨
连绵细雨:使得雨滴消失在屏幕底端,从屏幕上端重新降落雨滴. 主函数 Waters water 类函数 settings 相关的设置 game_functions 功能函数 运行效果 连绵不断的动图
- 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 ...
- Python pygame 坦克大战
Python pygame 坦克大战 import pygame, time, random from pygame.sprite import SpriteSCREEN_WIDTH = 750 SC ...
- PYTHON pygame库实战——实现双人弹球小游戏
PYTHON pygame实战--运用pygame库实现双人弹球小游戏 使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截 ...
- python pygame 简单小游戏
python pygame 简单小游戏 最近学习了pygame,感觉十分有意思,花了一点时间制作了一个简单的小游戏 效果图 这是一个很简单的防守类小游戏 玩家可以使用wasd控制人物移动,并且鼠标控制 ...
- 保姆级教学——Python+Pygame怎么实现吃豆豆游戏
耽搁十几天的时间,我顺利的从阳转阴啦, 以后的日子一切恢复正常,好好工作,积极分享.希望在座的小伙伴阳了的全部健康转阴,没阳的全部不会变阳,新的一年,一切顺顺利利. 不知道最近大家学习得怎么样?有没有 ...
- 小甲鱼python游戏代码_【小甲鱼】零基础学习python pygame 飞机大战可执行源代码...
[实例简介] [小甲鱼]零基础学习python pygame 飞机大战可执行源代码,觉得挺有意思,故此分享. [实例截图] [核心代码] 飞机大战 └── 飞机大战 ├── bullet.py ├── ...
- python +pygame 制作五子连珠小游戏
python +pygame 制作五子连珠小游戏 学习python半年了,今天分享一个利用pygame制作的五子连珠游戏. 一.代码: 1.球类,ball.py """ ...
- python pygame实战《飞船大战外星人》
学了一个月的python,最后两天学了下pygame,以一个小游戏结尾这段旅程. 游戏规则如下: 玩家可以通过上下左右四个键控制飞船移动,而且按住键不放可以联系移动,而不需要不断地按键松键来控制. 玩 ...
最新文章
- TVM性能评估分析(七)
- 【PySlowFast】Facebook开源算法代码库PySlowFast,轻松复现前沿视频理解模型
- Hystrix 资料简单梳理
- oracle数据库 append,oracle中insert,copy,insert append执行对比
- mysql 任务计划 /etc/cron.d_Linux /etc/cron.d增加定时任务
- redis smembersmap_redis 基本指令以及数据类型
- javascript 面试题之一
- Spring Cloud 中的@FeignClient注解中的contextId属性
- win7右键我的电脑管理菜单失效的解决办法
- [SOA] Mule ESB 3.x 入门(二)—— 配置(spring, properties, log4j)
- 一键开关机电路图解析
- css写七步诗,《七步诗》改写550字
- weex实现文本省略效果
- HDD硬盘securityATAerase事故(HDD被LOCKED)
- html5 3d自动,html5 3D微信头像自动抽奖代码
- python必备库 学习笔记 matplotlib
- python 中正无穷,负无穷的表示
- html字体怎么变大,网页字体怎么变大(html怎么改字体类型)
- Android内核三大核心功能之一AMS内部原理
- error:expected '{' at end of input
热门文章
- Fabric chaincode shim.ChaincodeStubInterface
- 从原理上解释什么是DDR的ZQ校准?
- Struts-2.3.24.1官方例子-struts2-blank
- 小工具--理财计算器
- 神经网络中_,predicted=中_,的作用
- 职场干货 | 如何让你的自我介绍,快速打动面试官
- php cms下载地址,让PHPCMS下载内容页显示链接真实地址
- c++ primer plus编程练习题参考第六章
- 【技术】怎么将PPT中的白底图片,白色部分变透明?
- Jetpack Compose - CircularProgressIndicator、LinearProgressIndicator