ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python pygame-小球丝滑移动demo

2022-08-12 18:30:47  阅读:181  来源: 互联网

标签:ball 丝滑 Python demo screen dir pygame event rect


需要有python3.6及以上的环境和 安装 pygame库 : pip install pygame
import sys
import pygame

print(pygame) pygame.init() # init() 用来对python进行初始化, 因为pygame是跨平台的所以需要先根据所在系统与环境初始化 # pygame.display 该对象负责游戏窗口的显示 # set_mode(resolution=(0,0)) -> Surface 表面/图层 # 该方法用来设置游戏窗口的大小,调用该方法,会立即显示一个游戏窗口 # 需要一个元组作为参数,元组中有两个参数 # 第一个 是屏幕的宽度 # 第二个 是屏幕的高度 # 该方法会返回一个surface对象,该对象表示画面中的一个基本元素,游戏中的所有元素都是一个一个图层组成 screen = pygame.display.set_mode((800, 600)) # print(screen) # <Surface(800x600x32 SW)> 代表整个窗口 # set_caption 用来设置游戏窗口的标题 pygame.display.set_caption('小球丝滑移动') # 设置窗口的背景颜色 给screen设置颜色,设置颜色值,使用的是RGB值【光的三原色】 0-255 表示一个字节 screen.fill((220, 220, 220)) # 使用fill,来为surface设置背景颜色 # image 对象专门用来加载图片 # pygame.image.load(img_path) -> surface ball = pygame.image.load('intro_ball.gif') # print(ball) # <Surface(111x111x8 SW)> # Rect 表示矩形,即每一个图层在窗口中,所占的位置实际上都是一个矩形 ball_rect = ball.get_rect() screen_rect = screen.get_rect() # print(ball_rect) # <rect(0, 0, 111, 111)> # 【坐标与我们数学中的,在y轴方向是向下的,x轴一样】 通过改变矩形对象的x 和 y来影响 矩形的位置 # ball_rect.x = 100 # ball_rect.y = 100 # centerx 和 centery 用来设置图层中心位置坐标 --> 去到窗口的中心位置 ball_rect.centerx = screen_rect.centerx ball_rect.centery = screen_rect.centery # blit(source, dest, area=None, special_flags = 0) -> Rect # 这是surface的方法,可以将一个其他的图层绘制到当前图层中 # 参数: # 1.要绘制的图层 # 2.绘制图层的位置 <rect(0, 0, 111, 111)> screen.blit(ball, ball_rect) # flip 对整个窗口进行渲染 # Update the full display Surface to the screen pygame.display.flip() # 创建一个存储小球移动方向的变量 ball_dir = 0 # 创建一个存储小球移动速度的变量 ball_speed = 1 # 创建一个游戏主循环【任何一个游戏都有一个无限循环在运行着】 while 1: # event 是pygame中的事件对象,通过event可以获取事件信息 # lst = pygame.event.get() # 列表中都是当前所发生的事件对象 for event in pygame.event.get(): # 判断用户是否点击关闭 if event.type == pygame.QUIT: sys.exit() # 检查用户是否敲击键盘 elif event.type == pygame.KEYDOWN: # 获取用户按下的按键, key 用来在键盘按下时,会获取按键的编号 # print(event.key) ball_dir = event.key # 只控制方向 elif event.type == pygame.KEYUP: # 按键松开停止移动 【这里注意有个按住多个方向键问题】 # 注意 这里要解决一个问题:即我们按住左键球向左移动,但是我们同时按住右键,再松开左键就停止了 if ball_dir == event.key: ball_dir = 0 if ball_dir == pygame.K_UP: # 小球向上移动,y值减小 ball_rect.y -= ball_speed elif ball_dir == pygame.K_DOWN: ball_rect.y += ball_speed elif ball_dir == pygame.K_LEFT: ball_rect.x -= ball_speed elif ball_dir == pygame.K_RIGHT: ball_rect.x += ball_speed # else: # # 回到初始位置 # ball_rect.centerx = screen_rect.centerx # ball_rect.centery = screen_rect.centery # 控制小球的位置是否超过左右边界 if ball_rect.left < 0: # 也可以是 ball_rect.x ball_rect.left = 0 elif ball_rect.right > screen_rect.width: ball_rect.right = screen_rect.width # 控制小球的位置是否超过上下边界 if ball_rect.top < 0: # 也可以是 ball_rect.y ball_rect.top = 0 elif ball_rect.bottom > screen_rect.height: ball_rect.bottom = screen_rect.height # 需要先盖一层,防止画完小球一直存在无法体现移动 screen.fill((220, 220, 220)) screen.blit(ball, ball_rect) pygame.display.flip()

源码和图片获取源:链接: https://pan.baidu.com/s/1uGgWcqWtlDLXeqIPl1-KQQ 提取码: y9zb

 

标签:ball,丝滑,Python,demo,screen,dir,pygame,event,rect
来源: https://www.cnblogs.com/guo-s/p/16580990.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有