秒会Pygame:键盘移动和鼠标点击移动物体的方法(含完整的代码)

秒会Pygame:键盘移动和鼠标点击移动物体的方法(含完整的代码),第1张

目录

预备知识

键盘控制物体移动事件

鼠标点击控制物体移动事件

鼠标移动的同时画彩色小球


预备知识

pygame的基本函数介绍

1.初始化函数,pygame的必备

 pygame.init()  

2.设置屏幕的大小

pygame.display.set_mode(size) //(长,宽)

3. 程序的命名

pygame.display.set_caption("string")

4.屏幕的颜色填充

screen.fill(R,B,G)  

5.图片的载入

 pygame.image.load(''路径'')

6.事件的获取

pygame.event.get() 

7.画圆

pygame.draw.circle(屏幕,颜色,圆心,半径)

8.更新事件

 pygame.display.update() 

9.二维向量对象(多用于坐标)

pygame.math.Vector2()

10.返回向量的欧几里得长度

pygame.math.Vector2.length()

11.规范化向量

pygame.math.Vector2.normalize_ip() 

12.键盘按下的事件

event.type == pygame.KEYDOWN

event.key == pygame.K_UP //向上

event.key == pygame.K_DOWN //向下

event.key == pygame.K_LEFT //向左

event.key == pygame.K_RIGHT  //向右

13. 鼠标的d起事件

event.type == pygame.MOUSEBUTTONUP

好了,有了以上知识就可以开始施法了:

键盘控制物体移动事件

在屏幕上初始化一个外星人,用上、下、左、右键控制外星人移动

import sys
import pygame

pygame.init()
size = width, height = 600, 400
screen = pygame.display.set_mode(size)
screen.fill('white')
pygame.display.set_caption('外星人键盘移动事件')
img=pygame.image.load('C:/Users/leslie/Desktop/alien.png')
position = img.get_rect()

while True:
    
    site = [0, 0]
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()      
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                site[1] -= 10             
            if event.key == pygame.K_DOWN:
                site[1] += 10              
            if event.key == pygame.K_LEFT:
                site[0] -= 10            
            if event.key == pygame.K_RIGHT:
                site[0] += 10          
        if  event.type == pygame.MOUSEBUTTONDOWN:
            xx,yy=event.pos
            site=[xx,yy]
            
    position = position.move(site) 
    screen.fill('white')
    screen.blit(img, position)
    pygame.display.flip()

 

鼠标点击控制物体移动事件

在屏幕上初始化一个外星人,点击鼠标使外星人移动到鼠标点击的地方

import pygame
from pygame import Vector2
import sys
 
pygame.init()  
pygame.display.set_caption('外星人鼠标点击移动')
size = width, height = 600, 600 
screen = pygame.display.set_mode(size)  
color = (250, 250, 250) 
alien = pygame.image.load('C:/Users/leslie/Desktop/alien.png')  
alienrect = alien.get_rect()
start_position = Vector2(0,0) 
speed = 6
mouse_xy = (0,0)
while True:
    
    for event in pygame.event.get():  
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.MOUSEBUTTONDOWN:
            mouse_xy = Vector2(event.pos)
    dis = mouse_xy - start_position 
    dis_lenth = dis.length()        
    if dis_lenth < speed: 
        mouse_xy = start_position
    elif dis_lenth != 0:
        dis.normalize_ip() 
        dis = dis*speed 
        start_position += dis       
 
    screen.fill(color)  
    screen.blit(alien, start_position) 
    pygame.display.flip()

 

鼠标移动的同时画彩色小球

随着鼠标的移动,每移动以下,在移动后的位置画出颜色随机的小球

import pygame
import sys
from random import randint

pygame.init()
screen = pygame.display.set_mode((500,500))
screen.fill('white')
pygame.display.set_caption("鼠标移动画圆")

pygame.display.flip()
while True:
    
    event = pygame.event.wait()
    if event.type == pygame.QUIT:
        pygame.quit()
        sys.exit()
    if event.type == pygame.MOUSEBUTTONDOWN:   
        mx,my = event.pos
        pygame.draw.circle(screen,(255,255,0),(mx,my),20)
        pygame.display.update()
    if event.type == pygame.MOUSEBUTTONUP:
        pass
    if event.type == pygame.MOUSEMOTION:
        mx, my = event.pos
        r = randint(0,255)
        g = randint(0,255)
        b = randint(0,255)
        pygame.draw.circle(screen, (r,g,b,),(mx, my),20)
        
        pygame.display.update()

 

其中的外星人图片如下: 

 

当然,我们还可以给程序加上背景,假装外星人在太空中遨游~~~

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/579010.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-11
下一篇2022-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存