使用pygame让方向键实现角色的移动和转向

实现效果

pygame小鱼

1.导入包pygame和sys

import pygame
import sys
from pygame.locals import *

2.初始化pygame,设置窗口大小

pygame.init()
screen = pygame.display.set_mode((800, 400))

3.导入角色图片

(1)先加载图片

img=pygame.image.load("./fish.png") # ./代表当前目录

(2)图片过大需要缩放

img=pygame.transform.scale(img,(50,50))  #可以将角色缩放

(3)获得图片的位置和大小

pos = img.get_rect()

4.展示图片

while True: # 游戏主循环
	for event in pygame.event.get(): # 获取事件
		if event.type == QUIT:  # 退出
            pygame.quit()  # 退出pygame模块
            sys.exit()  # 退出系统
	
	screen.fill((0,204,255)) # 使用蓝色填充窗口
	screen.blit(img,pos) # 在窗口上绘制图像
	pygame.display.update()  # 更新窗口画面显示

5.用键盘控制角色上下左右移动

while True:
	for event in pygame.event.get():
	......
	......
  	key = pygame.key.get_pressed()  # 获取键盘状态
    	if key[K_UP] and pos.top > 0:  # 如果方向键上按下,并且没有超过上边界
        	pos.y -= 5  # 向上移动一个速度的值
    	if key[K_DOWN] and pos.bottom < 400:  # 如果方向键下按下,并且没有超过下边界
        	pos.y += 5  # 向下移动一个速度的值
    	if key[K_LEFT] and pos.left > 0:  # 如果方向键左按下,并且没有超过左边界
        	pos.x -= 5  # 向左移动一个速度的值
    	if key[K_RIGHT] and pos.right < 800:  # 如果方向键右按下,并且没有超过右边界
        	pos.x += 5  # 向右移动一个速度的值
    
    screen.fill((0,204,255)) # 使用蓝色填充窗口
    ......
    ......
    

7.改变方向

transform.flip(Surface,xbool,ybool)可以将图片进行翻转,返回一个新图像
Surface:需要翻转的图像
xbool:是否水平翻转,True/False
ybool:是否垂直翻转,True/False

img_=pygame.transform.flip(img,True,False) #新建一个图片对象,用来存放面向左边的图片

8.全部代码

import pygame
import sys
from pygame.locals import *

clock = pygame.time.Clock()
img = pygame.image.load("./fish.png")
img=pygame.transform.scale(img,(50,50))  #可以将角色缩放
img_=pygame.transform.flip(img,True,False) #新建一个图片对象,用来存放面向左边的图片
pos = img.get_rect()
screen = pygame.display.set_mode((800, 400))
speedx = 5
speedy = 5
pygame.mouse.set_visible(False)  # 隐藏鼠标
while True:
    clock.tick(60) # 每秒不超过60帧的速度运行
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    '''# 让角色跟着鼠标走
    mouse_pos = pygame.mouse.get_pos()  # 获取鼠标位置
    pos.center=mouse_pos  #修改角色中心位置为鼠标位置'''

    # 用键盘控制角色上下移动
    key = pygame.key.get_pressed()  # 获取键盘状态
    if key[K_UP] and pos.top > 0:  # 如果方向键上按下,并且没有超过上边界
        pos.y -= speedy  # 向上移动一个速度的值
    if key[K_DOWN] and pos.bottom < 400:  # 如果方向键下按下,并且没有超过下边界
        pos.y += speedy  # 向下移动一个速度的值
    if key[K_LEFT] and pos.left > 0:  # 如果方向键左按下,并且没有超过左边界
        img = img_   #当按下左键时,图像变成面向左边的图片
        pos.x -= speedx  # 向左移动一个速度的值
    if key[K_RIGHT] and pos.right < 800:  # 如果方向键右按下,并且没有超过右边界
        img = pygame.image.load("./fish.png")  #当按下右键时载入原图
        img = pygame.transform.scale(img, (50, 50))  # 可以将角色缩放
        pos.x += speedx  # 向右移动一个速度的值
    screen.fill((0, 204, 255))  # 用纯色填充窗口
    screen.blit(img, pos)  # 绘制图像
    pygame.display.update()

猜你喜欢

转载自blog.csdn.net/sger123/article/details/130629261
今日推荐