浅谈Python Pygame图像的基本使用

笛卡尔坐标系

游戏离不开坐标,我们来康康pygame中坐标是如何设立的吧~

窗口左上角坐标(0,0),横轴正向向右,纵轴正向向下

实际效果

碰到边框就返回(其实是小球碰撞实验,我不爱用正经的小球,所以…)

代码

import pygame,sys

pygame.init()
size = width, height = 600, 400
speed = [1,1]
BLACK = 0, 0, 0
s = pygame.display.set_mode(size)
pygame.display.set_caption("hi 滑稽")

ball = pygame.image.load("img/361.png")
ballrect = ball.get_rect()

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
    ballrect = ballrect.move(speed[0], speed[1])
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = - speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = - speed[1]

    s.fill(BLACK)
    s.blit(ball, ballrect)
    pygame.display.update()

代码说明

碰撞原理

方法说明

方法 说明
pygame.image.load(filename) 将filename路径下的图像载入游戏,支持JPG、PNG、GIF(非动画)等13种常用图片格式
get_rect() 返回一个覆盖图像的矩形Rect对象
move(x,y) 矩形移动一个偏移量(x,y),即在横轴方向移动x像素,纵轴方向移动y像素,xy为整数
fill(color) 显示窗口背景填充为color颜色,采用RGB色彩体系
blit(src, dest) 将一个图像绘制在另一个图像上,即将src绘制到dest位置上。

载入图片

pygame.init()
size = width, height = 600, 400       #设置了宽高,也可以在pygame.display.set_mode()设置
speed = [1,1]              #速度
BLACK = 0, 0, 0            #颜色黑色
s = pygame.display.set_mode(size)
pygame.display.set_caption("hi 滑稽")
ball = pygame.image.load("img/361.png")  #注意图片路径

ballrect = ball.get_rect()

surface对象和Rect对象

Rect对象属性

Rect对象有一些重要属性,例如:top,bottom,left,right表示上下左右width,height表示宽度、高度。

移动

ballrect = ballrect.move(speed[0], speed[1])      #  x1
    if ballrect.left < 0 or ballrect.right > width:    # x2
        speed[0] = - speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = - speed[1]

x1:矩形移动一个偏移量(x,y),即在横轴方向移动x像素,纵轴方向移动y像素,xy为整数x2:遇到左右两侧,横向速度取反;遇到上下两侧,纵向速度取反。

到此这篇关于浅谈Python Pygame图像的基本使用的文章就介绍到这了,更多相关Pygame图像的基本使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python使用Pygame绘制时钟

    本文实例为大家分享了Python使用Pygame绘制时钟的具体代码,供大家参考,具体内容如下 前提条件: 需要安装pygame 功能: 1.初始化界面显示一个时钟界面 2.根据当前的时间实现时针.分针.秒针的移动 import pygame, sys, random, math from datetime import datetime from pygame.locals import * def print_text(font, x, y, text, color=(255, 255, 25

  • 使用python和pygame制作挡板弹球游戏

    python是个很有趣的语言,可以在cmd命令窗口运行,还有很多的功能强大的模块. 学了一天pygame,用python和pygame写一个简单的挡板弹球游戏. 2018年6月21日 00:15:21 GitHub: EasyBaffleBallGame # -*- coding:utf-8 -*- from sys import exit import pygame from pygame.locals import * pygame.init() # 创建窗口 ScreenWidth = 5

  • python使用pygame实现笑脸乒乓球弹珠球游戏

    今天我们用python和pygame实现一个乒乓球的小游戏,或者叫弹珠球游戏. 笑脸乒乓球游戏功能介绍 乒乓球游戏功能如下: 乒乓球从屏幕上方落下,用鼠标来移动球拍,使其反弹回去,并获得得分,如果没有接到该球,则失去一条命.玩家有一定数量的命如5. 游戏设计思路 根据游戏规则,我们需要 1.初始化游戏环境 2.画出乒乓球,球拍等 3.设置乒乓球的运动,并监听鼠标,以移动球拍 4.判断乒乓球被接住与否 5.游戏是否结束,是否再玩. 代码实现 import pygame pygame.init()

  • 使用Python第三方库pygame写个贪吃蛇小游戏

    今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码: # 导入模块 import pygame import random # 初始化 pygame.init() w = 720 #窗口宽度 h = 600 #窗口高度 ROW = 30 #行数 COL = 36 #列数 #将所有的坐标看作是一个个点,定义点类 class Point: row = 0 col = 0 def __init__(self

  • python使用pygame创建精灵Sprite

    一 .精灵(Sprite),屏幕上的对象.精灵组是精灵的组合.创建空的精灵组对象: 精灵组可以对其中的所有精灵调用它们各自的更新方法(self.update)来进行更新,如位置更新.碰撞检测.冲突检测等: all_sprites.update() 精灵组可以对其中的所有精灵调用它们各自的DRAW方法(self.update)来绘制精灵: all_sprites.draw(screen) 二.创建精灵 1.创建精灵需要继承基类pg.sprite.Sprite.每个Pygame精灵都必须拥有两个属性

  • python使用PyGame绘制图像并保存为图片文件的方法

    本文实例讲述了python使用PyGame绘制图像并保存为图片文件的方法.分享给大家供大家参考.具体实现方法如下: ''' pg_draw_circle_save101.py draw a blue solid circle on a white background save the drawing to an image file for result see http://prntscr.com/156wxi tested with Python 2.7 and PyGame 1.9.2

  • 浅谈Python Pygame图像的基本使用

    笛卡尔坐标系 游戏离不开坐标,我们来康康pygame中坐标是如何设立的吧~ 窗口左上角坐标(0,0),横轴正向向右,纵轴正向向下 实际效果 碰到边框就返回(其实是小球碰撞实验,我不爱用正经的小球,所以-) 代码 import pygame,sys pygame.init() size = width, height = 600, 400 speed = [1,1] BLACK = 0, 0, 0 s = pygame.display.set_mode(size) pygame.display.s

  • 浅谈Python pygame绘制机制

    pygame绘制机制简介 屏幕控制 pygame.display • 用来控制Pygame游戏的屏幕 • Pygame有且只有一个屏幕 • 屏幕左上角坐标为(0,0) • 以像素为单位 屏幕控制需求 • 游戏全屏 • 游戏屏幕大小可调节 • 游戏屏幕无边框 • 更改游戏标题栏内容 • 更改游戏图标 • -- 屏幕控制的重要函数 OpenGL和硬件加速 OpenGL被设计成独立于硬件,独立于窗口系统,在运行各种操作系统的各种计算机上都可用,并能在网络环境下以客户/服务器模式工作,是专业图形处理.科

  • 浅谈python下tiff图像的读取和保存方法

    对比测试 scipy.misc 和 PIL.Image 和 libtiff.TIFF 三个库 输入: 1. (读取矩阵) 读入uint8.uint16.float32的lena.tif 2. (生成矩阵) 使用numpy产生随机矩阵,float64的mat import numpy as np from scipy import misc from PIL import Image from libtiff import TIFF # # 读入已有图像,数据类型和原图像一致 tif32 = mi

  • 浅谈python opencv对图像颜色通道进行加减操作溢出

    由于opencv读入图片数据类型是uint8类型,直接加减会导致数据溢出现象 (1)用Numpy操作 可以先将图片数据类型转换成int类型进行计算, data=np.array(image,dtype='int') 经过处理后(如:遍历,将大于255的置为255,小于0的置为0) 再将图片还原成uint8类型 data=np.array(image,dtype='uint8') 注意: (1)如果直接相加,那么 当像素值 > 255时,结果为对256取模的结果,例如:(240+66) % 256

  • 浅谈python可视化包Bokeh

    本文研究的主要是python可视化包Bokeh的相关内容,具体如下. 问题:需要把pandas的数据绘图并通过网页显示,matplotlib需要先保存图像,不合适. 解决:在网上搜了一下,找到一篇介绍文章 python可视化工具概述,其中介绍了几个python包,总结如下: Pandas对于简单绘图,可以随手用,但你需要学习定制matplotlib. Seaborn可以支持更多复杂的可视化方式,但仍然需要matplotlib知识,上色功能是个亮点. ggplot有很多功能,但还需要发展. bok

  • 浅谈Python Opencv中gamma变换的使用详解

    伽马变换就是用来图像增强,其提升了暗部细节,简单来说就是通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正. 伽马变换的基本形式如下: 大于1时,对图像的灰度分布直方图具有拉伸作用(使灰度向高灰度值延展),而小于1时,对图像的灰度分布直方图具有收缩作用(是使灰度向低灰度值方向靠拢). #分道计算每个通道的直方图 img0 = cv2.imread('12.jpg') hist_b = cv2.calcHist([img0],

  • 浅谈Python 命令行参数argparse写入图片路径操作

    什么是命令行参数? 命令行参数是在运行时给予程序/脚本的标志.它们包含我们程序的附加信息,以便它可以执行. 并非所有程序都有命令行参数,因为并非所有程序都需要它们. 为什么我们使用命令行参数? 如上所述,命令行参数在运行时为程序提供附加信息. 这允许我们在不改变代码的情况下动态地为我们的程序提供不同的输入 . 您可以绘制命令行参数类似于函数参数的类比.如果你知道如何在各种编程语言中声明和调用函数,那么当你发现如何使用命令行参数时,你会立刻感到宾至如归. 鉴于这是计算机视觉和图像处理博客,您在这里

  • 浅谈python中常用的excel模块库

    openpyxl openpyxl是⼀个Python库,用于读取/写⼊Excel 2010 xlsx / xlsm / xltx / xltm⽂件. 它的诞⽣是因为缺少可从Python本地读取/写⼊Office Open XML格式的库. 如何安装: 使用pip安装openpyxl $ pip install openpyxl 使用效果之⼀: 比如可以直接读取表格数据后综合输出写⼊到后⾯的⼀列中 xlwings xlwings是BSD许可的Python库,可轻松从Excel调用Python,同样

  • 浅谈Python实现opencv之图片色素的数值运算和逻辑运算

    数值运算 代码: # -*- coding=GBK -*- import cv2 as cv # 数值运算:加减乘除 def shu_image(src11, src22): src = cv.add(src11, src22) # 加 : 图像对应像素值相加,> 255 时取255 cv.namedWindow("add",0) cv.resizeWindow("add", 300, 300) # 设置播放窗口长和宽 cv.imshow("add&

  • 浅谈python中copy和deepcopy中的区别

    在下是个编程爱好者,最近将魔爪伸向了Python编程.....遇到copy和deepcopy感到很困惑,现在针对这两个方法进行区分,一种是浅复制(copy),一种是深度复制(deepcopy). 首先说一下deepcopy,所谓的深度复制,在这里我理解的是完全复制然后变成一个新的对象,复制的对象和被复制的对象没有任何关系,彼此之间无论怎么改变都相互不影响. 然后说一下copy,在这里我分为两类来说,一种是字典数据类型的copy函数,一种是copy包的copy函数. 一.字典数据类型的copy函数

随机推荐