美文网首页
day15-总结

day15-总结

作者: RurouniKenshin | 来源:发表于2018-07-30 20:47 被阅读132次

pygame的鼠标事件

两个实例:

import pygame
import random
# 随机颜色
def rand_color():
    return (random.randint(0,255),
            random.randint(0,255),
            random.randint(0,255))
# 画圆
def draw_circle(screen,pos):
    pygame.draw.circle(screen,
                       rand_color(),
                       event.pos,
                       random.randint(10, 40))
# 判断点击范围
def is_in_rect(point,rect):
    x,y = point
    rx,ry,rw,rh = rect
    if (rx <= x <= rx+rw) and (ry <= y <= ry+rh):
        return True
    return False
# 画一个按钮
def draw_button(screen,b_color,t_color):
    pygame.draw.rect(screen, b_color, (125, 125, 90, 40))
    font = pygame.font.SysFont('Times', 30)
    button = font.render('clicke', True, t_color)
    screen.blit(button,(135,125))
    return button
if __name__ == '__main__':
    pygame.init()
    screen = pygame.display.set_mode((500,500))
    screen.fill((255,255,255))
    # 设置窗口标题
    pygame.display.set_caption('鼠标事件')
    while True:
        rect = (125, 125, 90, 40)
        # draw_button(screen,(0,255,0),(255,0,0))
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
            # 判断鼠标点击的位置是否在框内,在画一个按钮
            if event.type == pygame.MOUSEBUTTONDOWN:
                # draw_circle(screen,event.pos)
                if is_in_rect(event.pos,rect):
                    draw_button(screen, (255, 0, 0), (0, 255, 0))
                    pygame.display.flip()
            # 鼠标弹起返回按钮原先的状态
            if event.type == pygame.MOUSEBUTTONUP:
                draw_button(screen, (0, 255, 0), (255, 0, 0))
                pygame.display.flip()
            # 鼠标移动带圆
            if event.type == pygame.MOUSEMOTION:
                screen.fill((255,255,255))
                draw_button(screen, (0, 255, 0), (255, 0, 0))
                draw_circle(screen,event.pos)
                pygame.display.flip()

image.png
# 要求:先在屏幕上显示一张图片,当鼠标按下移动的时候,拽着图片跟着一起动。鼠标弹起就不动了
import pygame
# 判断点在某个范围内
def is_in_rect(point,rect):
    x,y = point
    rx,ry,rw,rh = rect
    if (rx <= x <= rx+rw) and (ry <= y <= ry+rh):
        return True
    return False

if __name__ == '__main__':
    pygame.init()
    screen = pygame.display.set_mode((500,500))
    screen.fill((255,255,255))
    # 设置窗口标题
    pygame.display.set_caption('鼠标事件2')
    image = pygame.image.load('hero1.png')
    screen.blit(image,(125,125))
    iw,ih = image.get_size()
    rect = (125, 125, iw, ih)
    pygame.display.flip()
    # 移动状态
    flag = False
    while True:
        # draw_button(screen,(0,255,0),(255,0,0))
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
            # 按下可动
            if event.type == pygame.MOUSEBUTTONDOWN:
                if is_in_rect(event.pos,rect):
                    flag = True
            # 弹起不可动
            if event.type == pygame.MOUSEBUTTONUP:
                flag = False
            # 画图片
            if event.type == pygame.MOUSEMOTION:
                x,y = event.pos
                if flag:
                    screen.fill((255,255,255))
                    screen.blit(image,(x-iw/2,y-ih/2))
                    rect = (x-iw/2,y-ih/2,iw,ih)
                    pygame.display.flip()
image.png

相关文章

  • day15-总结

    pygame的鼠标事件 两个实例:

  • Day15-总结

    01-多继承 1.多继承: 让一个类同时继承多个类注意:实际开发一般不使用 2.多态: 类的特点:封装,继承,多态...

  • Day15-总结

    1.类中的方法 1)对象方法怎么声明:直接声明在类中的函数怎么调用:通过对象来调用特点:有个指向当前对象的默认参数...

  • day15-课后总结

    类和对象 1.类方法和静态方法 1.对象方法a.直接声明在类中b.自带参数selfc.通过对象来调用 2.类方法a...

  • day15-课堂总结

    多继承 多继承:让一个类同时继承多个类两个类的方法都能继承,字段也能继承,但是对象属性只能继承第一个类的对象属性2...

  • 21天女神养成记 day15

    Day15-【21天女神养成记-你知道你是什么脸型吗?】-邸红敏-2018.12.22(倒计时7天) 脸型共分为标...

  • day15-软件管理-笔记

    Day15-软件管理rpm,yum 导读 今日内容1.什么是rpm?rpm软件包的组成部分有哪些?2.如何获取rp...

  • 62号 #百日生涯营# D15恋爱日

    百日营的Day15-恋爱日 【百日生涯营DAY15】 恋爱日:爱情的发展可以分为3个阶段:刺激阶段,价值阶段,角色...

  • #30天专注橙长计划#数学魔术Day15–魔术练习

    #30天专注橙长计划#数学魔术Day15-魔术练习 下周数学组教研活动,内容之一是暑期学习分享。我们四位到北京学习...

  • Day15-作业

    定义一个学生类。有属性:姓名、年龄、成绩(语文,数学,英语)[每课成绩的类型为整数]方法: a. 获取学生的姓名:...

网友评论

      本文标题:day15-总结

      本文链接:https://www.haomeiwen.com/subject/pjrqvftx.html