《零基础入门学习Python》第088讲:Pygame:摩擦摩擦

2023-11-08

Play The Ball 这个小游戏现在已经有了背景音乐,有了小球,有了碰撞检测,接下来我们要做的就是摩擦摩擦。

我们有一块玻璃面板的图片,如下图所示:为了方便,我把文字也打上去了。(是透明的哦)

(还是老样子,有需要素材的可以在评论区留下邮箱或者其他的啥)

 

现在我们的要求就是把这块玻璃面板加载到程序底部的中央位置。

import pygame
import sys
from pygame.locals import *
from random import *

# 球类继承自Spirte类
class Ball(pygame.sprite.Sprite):
    def __init__(self, image, position, speed, bg_size):
        # 初始化动画精灵
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load(image).convert_alpha()
        self.rect = self.image.get_rect()
        # 将小球放在指定位置
        self.rect.left, self.rect.top = position
        self.speed = speed
        self.width, self.height = bg_size[0], bg_size[1]
        self.radius = self.rect.width / 2  #增加半径属性

    def move(self):
        self.rect = self.rect.move(self.speed)

        # 如果小球的左侧出了边界,那么将小球左侧的位置改为右侧的边界
        # 这样便实现了从左边进入,右边出来的效果
        if self.rect.right < 0:
            self.rect.left = self.width

        elif self.rect.left > self.width:
            self.rect.right = 0

        elif self.rect.bottom < 0:
            self.rect.top = self.height

        elif self.rect.top > self.height:
            self.rect.bottom = 0
##############################################################
class Glass(pygame.sprite.Sprite):
    def __init__(self, glass_image, bg_size):
        #初始化动画精灵
        pygame.sprite.Sprite.__init__(self)

        self.glass_image = pygame.image.load(glass_image).convert_alpha()
        self.glass_rect = self.glass_image.get_rect()
        self.glass_rect.left, self.glass_rect.top = \
                              (bg_size[0] - self.glass_rect.width) // 2, \
                              bg_size[1] - self.glass_rect.height   
##############################################################
        
def main():
    pygame.init()

    ball_image = "gray_ball.png"
    bg_image = "background.png"
    glass_image = "glass.png"

    running = True

    #添加背景音乐
    pygame.mixer.music.load('bg_music.ogg')
    pygame.mixer.music.set_volume(0.2)#设置音量    
    pygame.mixer.music.play(1, 160)#播放

    #加载音效
    winner_sound = pygame.mixer.Sound("winner.wav")
    winner_sound.set_volume(0.2)
    loser_sound = pygame.mixer.Sound("loser.wav")
    loser_sound.set_volume(0.2)
    laugh_sound = pygame.mixer.Sound("laugh.wav")
    laugh_sound.set_volume(0.2)
    hole_sound = pygame.mixer.Sound("hole.wav")
    hole_sound.set_volume(0.2)

    #背景音乐会贯穿游戏的始终,背景音乐完整播放一次我们视为游戏的时间,
        
    #音乐播放完时,游戏结束
    GAMEOVER = USEREVENT
    pygame.mixer.music.set_endevent(GAMEOVER)  
   
    # 根据背景图片指定游戏界面尺寸
    bg_size = width, height = 1024, 681
    screen = pygame.display.set_mode(bg_size)
    pygame.display.set_caption("Play the ball - Python Demo")

    background = pygame.image.load(bg_image).convert_alpha()

    # 用来存放小球对象的列表
    balls = []
    group = pygame.sprite.Group()

    # 创建五个小球
    for i in range(5):
        # 位置随机,速度随机
        position = randint(0, width-100), randint(0, height-100)
        speed = [randint(-10, 10), randint(-10, 10)]
        ball = Ball(ball_image, position, speed, bg_size)
        while pygame.sprite.spritecollide(ball, group, False, pygame.sprite.collide_circle):#在创建小球这里必须进行一下碰撞检测
            ball.rect.left, ball.rect.top = randint(0, width-100), randint(0, height-100)
        balls.append(ball)
        group.add(ball)

    ###########################################################
    glass = Glass(glass_image, bg_size)    
    ###########################################################

    clock = pygame.time.Clock()

    while running:
        for event in pygame.event.get():
            if event.type == QUIT:
                sys.exit()
          
            elif event.type == GAMEOVER: #判断事件是否为我们自定义的GAMEOVER事件
                loser_sound.play()  
                pygame.time.delay(2000)#暂停2秒
                laugh_sound.play()
                running = False
                            
        screen.blit(background, (0, 0))
        #############################################
        screen.blit(glass.glass_image, glass.glass_rect)
        #############################################

        for each in balls:
            each.move()
            screen.blit(each.image, each.rect)

        for each in group:
            group.remove(each) #把自身拿出来

            if pygame.sprite.spritecollide(each, group, False, pygame.sprite.collide_circle):#把自己和别的球进行碰撞检测
                each.speed[0] = -each.speed[0]
                each.speed[1] = -each.speed[1]

            group.add(each)#还要把自己放进去

        pygame.display.flip()
        clock.tick(30)


if __name__ == "__main__":
    main()

接下来我们就需要对鼠标动手了,大家也看到了,Pygame 默认的鼠标非常难看,又小又黑又土,而作为一个游戏的话,漂亮的光标往往就是决胜的关键,游戏开发注重的就是细节,现在我们就用自定义的光标图片替换原来又小又黑又土的光标。如图·所示:

接下来要做的事就是自定义光标,然后把这个小手(光标)限制在玻璃面板内。

关于自定义鼠标的光标:

我们的做法就是使用 set_visible() 方法来将光标设为不可见,然后使用 get_pos()  方法获取鼠标的实时位置,获取之后,我们实时的把 hand.png 图片画到这个位置上去,这样子就相当于实现了自定义光标。

  • pygame.mouse.set_visible()  ——  隐藏或显示鼠标光标
  • pygame.mouse.get_pos()  ——  获取鼠标光标的位置

我们来代码实现:

import pygame
import sys
from pygame.locals import *
from random import *

# 球类继承自Spirte类
class Ball(pygame.sprite.Sprite):
    def __init__(self, image, position, speed, bg_size):
        # 初始化动画精灵
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load(image).convert_alpha()
        self.rect = self.image.get_rect()
        # 将小球放在指定位置
        self.rect.left, self.rect.top = position
        self.speed = speed
        self.width, self.height = bg_size[0], bg_size[1]
        self.radius = self.rect.width / 2  #增加半径属性

    def move(self):
        self.rect = self.rect.move(self.speed)

        # 如果小球的左侧出了边界,那么将小球左侧的位置改为右侧的边界
        # 这样便实现了从左边进入,右边出来的效果
        if self.rect.right < 0:
            self.rect.left = self.width

        elif self.rect.left > self.width:
            self.rect.right = 0

        elif self.rect.bottom < 0:
            self.rect.top = self.height

        elif self.rect.top > self.height:
            self.rect.bottom = 0
##############################################################
class Glass(pygame.sprite.Sprite):
    def __init__(self, glass_image, mouse_image, bg_size):
        #初始化动画精灵
        pygame.sprite.Sprite.__init__(self)

        self.glass_image = pygame.image.load(glass_image).convert_alpha()
        self.glass_rect = self.glass_image.get_rect()
        self.glass_rect.left, self.glass_rect.top = \
                              (bg_size[0] - self.glass_rect.width) // 2, \
                              bg_size[1] - self.glass_rect.height

        self.mouse_image = pygame.image.load(mouse_image).convert_alpha()#加载小手光标
        self.mouse_rect = self.mouse_image.get_rect()#获取小手光标矩形位置
        self.mouse_rect.left, self.mouse_rect.top = \
                              self.glass_rect.left, self.glass_rect.top  #小手光标初始在玻璃面板左上角
        pygame.mouse.set_visible(False)#设置Pygame 光标不可见

##############################################################
        
def main():
    pygame.init()

    ball_image = "gray_ball.png"
    bg_image = "background.png"
    glass_image = "glass.png"
    mouse_image = "hand.png"

    running = True

    #添加背景音乐
    pygame.mixer.music.load('bg_music.ogg')
    pygame.mixer.music.set_volume(0.2)#设置音量    
    pygame.mixer.music.play(1, 160)#播放

    #加载音效
    winner_sound = pygame.mixer.Sound("winner.wav")
    winner_sound.set_volume(0.2)
    loser_sound = pygame.mixer.Sound("loser.wav")
    loser_sound.set_volume(0.2)
    laugh_sound = pygame.mixer.Sound("laugh.wav")
    laugh_sound.set_volume(0.2)
    hole_sound = pygame.mixer.Sound("hole.wav")
    hole_sound.set_volume(0.2)

    #背景音乐会贯穿游戏的始终,背景音乐完整播放一次我们视为游戏的时间,
        
    #音乐播放完时,游戏结束
    GAMEOVER = USEREVENT
    pygame.mixer.music.set_endevent(GAMEOVER)  
   
    # 根据背景图片指定游戏界面尺寸
    bg_size = width, height = 1024, 681
    screen = pygame.display.set_mode(bg_size)
    pygame.display.set_caption("Play the ball - Python Demo")

    background = pygame.image.load(bg_image).convert_alpha()

    # 用来存放小球对象的列表
    balls = []
    group = pygame.sprite.Group()

    # 创建五个小球
    for i in range(5):
        # 位置随机,速度随机
        position = randint(0, width-100), randint(0, height-100)
        speed = [randint(-10, 10), randint(-10, 10)]
        ball = Ball(ball_image, position, speed, bg_size)
        while pygame.sprite.spritecollide(ball, group, False, pygame.sprite.collide_circle):#在创建小球这里必须进行一下碰撞检测
            ball.rect.left, ball.rect.top = randint(0, width-100), randint(0, height-100)
        balls.append(ball)
        group.add(ball)

    ###########################################################
    glass = Glass(glass_image, mouse_image, bg_size)    
    ###########################################################

    clock = pygame.time.Clock()

    while running:
        for event in pygame.event.get():
            if event.type == QUIT:
                sys.exit()
          
            elif event.type == GAMEOVER: #判断事件是否为我们自定义的GAMEOVER事件
                loser_sound.play()  
                pygame.time.delay(2000)#暂停2秒
                laugh_sound.play()
                running = False
                            
        screen.blit(background, (0, 0))
        #############################################
        screen.blit(glass.glass_image, glass.glass_rect)
        #############################################
        #将小手光标画在Pygame 默认光标位置上
        glass.mouse_rect.left, glass.mouse_rect.top = pygame.mouse.get_pos()

        #限制光标只能在玻璃面板范围内移动(摩擦摩擦)
        if glass.mouse_rect.left < glass.glass_rect.left:
            glass.mouse_rect.left = glass.glass_rect.left
        if glass.mouse_rect.left > glass.glass_rect.right - glass.mouse_rect.width:
            glass.mouse_rect.left = glass.glass_rect.right - glass.mouse_rect.width
        if glass.mouse_rect.top < glass.glass_rect.top:
            glass.mouse_rect.top = glass.glass_rect.top
        if glass.mouse_rect.top > glass.mouse_rect.bottom - glass.mouse_rect.height:
            glass.mouse_rect.top = glass.mouse_rect.bottom - glass.mouse_rect.height

        screen.blit(glass.mouse_image, glass.mouse_rect)
        #############################################

        for each in balls:
            each.move()
            screen.blit(each.image, each.rect)

        for each in group:
            group.remove(each) #把自身拿出来

            if pygame.sprite.spritecollide(each, group, False, pygame.sprite.collide_circle):#把自己和别的球进行碰撞检测
                each.speed[0] = -each.speed[0]
                each.speed[1] = -each.speed[1]

            group.add(each)#还要把自己放进去

        pygame.display.flip()
        clock.tick(30)


if __name__ == "__main__":
    main()

下一步,让小球响应光标的移动频率。

我们需要让小球响应光标一定频率的摩擦摩擦而停下来变成绿色,就是说,鼠标在玻璃面板上摩擦,达到一定频率的时候,某一个匹配的小球会停下来,而不是所有小球,停下来的小球就任你操作了。

我们知道,鼠标的一定会产生事件,我们可以利用这一点。假设单位时间是一秒,我们检测一秒内鼠标在玻璃面板内产生多少事件,从而判定每一秒产生的事件数是否能够匹配到某一个小球需要的要求。

步骤如下:

1、为每个小球设定一个不同的目标;

2、创建一个motion 变量来记录每一秒钟产生事件数量;

3、为小球添加一个 check() 方法,用于判断鼠标在1秒钟内产生的事件数量是否匹配此目标;

4、添加一个自定义事件,每一秒钟触发一次。调用每个小球的 check() 检测 motion 的值是否匹配某一个小球的目标,并将motion重新初始化,以便记录下1秒鼠标事件数量;

5、小球应该添加一个 control 属性,用于记录当前的状态(绿色 -> 玩家控制 or 灰色 -> 随机移动)。

6、通过检查 control 属性决定绘制什么颜色的小球。

import pygame
import sys
from pygame.locals import *
from random import *

# 球类继承自Spirte类
class Ball(pygame.sprite.Sprite):
    def __init__(self, grayball_image, greenball_image, position, speed, bg_size, target):
        # 初始化动画精灵
        pygame.sprite.Sprite.__init__(self)

        self.grayball_image = pygame.image.load(grayball_image).convert_alpha()  #加载灰色小球
        self.greenball_image = pygame.image.load(greenball_image).convert_alpha()  #加载绿色小球
        self.rect = self.grayball_image.get_rect()  #两颜色小球矩形位置是一样的
        # 将小球放在指定位置
        self.rect.left, self.rect.top = position
        self.speed = speed
        ############################################
        #1、为每个小球设定一个不同的目标;
        self.target = target
        #############################################
        #5、小球应该添加一个 control 属性,用于记录当前的状态(绿色 -> 玩家控制 or 灰色 -> 随机移动)。
        self.control = False
        ##################################################
        self.width, self.height = bg_size[0], bg_size[1]
        self.radius = self.rect.width / 2  #增加半径属性

    def move(self):
        self.rect = self.rect.move(self.speed)

        # 如果小球的左侧出了边界,那么将小球左侧的位置改为右侧的边界
        # 这样便实现了从左边进入,右边出来的效果
        if self.rect.right < 0:
            self.rect.left = self.width

        elif self.rect.left > self.width:
            self.rect.right = 0

        elif self.rect.bottom < 0:
            self.rect.top = self.height

        elif self.rect.top > self.height:
            self.rect.bottom = 0
    ############################################################################
    #3、为小球添加一个 check() 方法,用于判断鼠标在1秒钟内产生的事件数量是否匹配此目标;
    def check(self, motion):
        if self.target < motion < self.target + 5:
            return True
        else:
            return False
    ############################################################################

class Glass(pygame.sprite.Sprite):
    def __init__(self, glass_image, mouse_image, bg_size):
        #初始化动画精灵
        pygame.sprite.Sprite.__init__(self)

        self.glass_image = pygame.image.load(glass_image).convert_alpha()
        self.glass_rect = self.glass_image.get_rect()
        self.glass_rect.left, self.glass_rect.top = \
                              (bg_size[0] - self.glass_rect.width) // 2, \
                              bg_size[1] - self.glass_rect.height

        self.mouse_image = pygame.image.load(mouse_image).convert_alpha()#加载小手光标
        self.mouse_rect = self.mouse_image.get_rect()#获取小手光标矩形位置
        self.mouse_rect.left, self.mouse_rect.top = \
                              self.glass_rect.left, self.glass_rect.top  #小手光标初始在玻璃面板左上角
        pygame.mouse.set_visible(False)#设置Pygame 光标不可见
       
def main():
    pygame.init()

    grayball_image = "gray_ball.png"
    greenball_image = "green_ball.png"
    bg_image = "background.png"
    glass_image = "glass.png"
    mouse_image = "hand.png"

    running = True

    #添加背景音乐
    pygame.mixer.music.load('bg_music.ogg')
    pygame.mixer.music.set_volume(0.2)#设置音量    
    pygame.mixer.music.play()#播放

    #加载音效
    winner_sound = pygame.mixer.Sound("winner.wav")
    winner_sound.set_volume(0.2)
    loser_sound = pygame.mixer.Sound("loser.wav")
    loser_sound.set_volume(0.2)
    laugh_sound = pygame.mixer.Sound("laugh.wav")
    laugh_sound.set_volume(0.2)
    hole_sound = pygame.mixer.Sound("hole.wav")
    hole_sound.set_volume(0.2)

    #背景音乐会贯穿游戏的始终,背景音乐完整播放一次我们视为游戏的时间,
        
    #音乐播放完时,游戏结束
    GAMEOVER = USEREVENT
    pygame.mixer.music.set_endevent(GAMEOVER)  
   
    # 根据背景图片指定游戏界面尺寸
    bg_size = width, height = 1024, 681
    screen = pygame.display.set_mode(bg_size)
    pygame.display.set_caption("Play the ball - Python Demo")

    background = pygame.image.load(bg_image).convert_alpha()

    # 用来存放小球对象的列表
    balls = []
    group = pygame.sprite.Group()

    # 创建五个小球
    for i in range(5):
        # 位置随机,速度随机
        position = randint(0, width-100), randint(0, height-100)
        speed = [randint(-10, 10), randint(-10, 10)]
        ball = Ball(grayball_image, greenball_image, position, speed, bg_size, 5 * (i + 1)) #target 设为5-30,比较适中
        while pygame.sprite.spritecollide(ball, group, False, pygame.sprite.collide_circle):#在创建小球这里必须进行一下碰撞检测
            ball.rect.left, ball.rect.top = randint(0, width-100), randint(0, height-100)
        balls.append(ball)
        group.add(ball)

    glass = Glass(glass_image, mouse_image, bg_size)
    #########################################
    #2、创建一个motion 变量来记录每一秒钟产生事件数量;
    motion = 0
    #########################################
    #4.1、添加一个自定义事件,每一秒钟触发一次。
    MYTIMER = USEREVENT + 1   #自定义事件的知识点可以查看上一节课的末尾注解
    pygame.time.set_timer(MYTIMER, 1000)
    ##############################################################
    
    clock = pygame.time.Clock()

    while running:
        for event in pygame.event.get():
            if event.type == QUIT:
                sys.exit()
          
            elif event.type == GAMEOVER: #判断事件是否为我们自定义的GAMEOVER事件
                loser_sound.play()  
                pygame.time.delay(2000)#暂停2秒
                laugh_sound.play()
                running = False

            ##############################################
            #4.2、 调用每个小球的 check() 检测 motion 的值是否匹配某一个小球的目标,并将motion重新初始化,以便记录下1秒鼠标事件数量;
            elif event.type == MYTIMER:
                if motion:
                    for each in group:
                        if each.check(motion):
                            each.speed = [0, 0]
                            each.control = True
                    motion = 0
            ##############################################
            #需要计算一下motion
            elif event.type == MOUSEMOTION:
                motion += 1
            ##############################################
        screen.blit(background, (0, 0))
        
        screen.blit(glass.glass_image, glass.glass_rect)

        #将小手光标画在Pygame 默认光标位置上
        glass.mouse_rect.left, glass.mouse_rect.top = pygame.mouse.get_pos()
        
        #限制光标只能在玻璃面板范围内移动(摩擦摩擦)
        if glass.mouse_rect.left < glass.glass_rect.left:
            glass.mouse_rect.left = glass.glass_rect.left
        if glass.mouse_rect.left > glass.glass_rect.right - glass.mouse_rect.width:
            glass.mouse_rect.left = glass.glass_rect.right - glass.mouse_rect.width
        if glass.mouse_rect.top < glass.glass_rect.top:
            glass.mouse_rect.top = glass.glass_rect.top
        if glass.mouse_rect.top > glass.mouse_rect.bottom - glass.mouse_rect.height:
            glass.mouse_rect.top = glass.mouse_rect.bottom - glass.mouse_rect.height

        screen.blit(glass.mouse_image, glass.mouse_rect)

        for each in balls:
            each.move()
            ##############################
            #如果小球的 control 属性为 True,就画绿球
            if each.control:
                #画绿色小球
                screen.blit(each.greenball_image, each.rect)
            else:
                #画灰色小球
                screen.blit(each.grayball_image, each.rect)
            ##############################
                

        for each in group:
            group.remove(each) #把自身拿出来

            if pygame.sprite.spritecollide(each, group, False, pygame.sprite.collide_circle):#把自己和别的球进行碰撞检测
                each.speed[0] = -each.speed[0]
                each.speed[1] = -each.speed[1]

            group.add(each)#还要把自己放进去

        pygame.display.flip()
        clock.tick(30)


if __name__ == "__main__":
    main()

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《零基础入门学习Python》第088讲:Pygame:摩擦摩擦 的相关文章

随机推荐

  • Linux修改文件出现错误E45:“readonly” option is set(add ! to override)退出不了vim

    出现这种错误时会退出不了vim 那么出现这种错误的原因有 1 该错误为当前用户没有权限对文件修改 2 该文件没有正确保存退出 正在打开状态 关闭后再保存 3 若该文件所有都关闭 提示有的人没有关闭 则删除该文件的临时文件则可正常打开 修改
  • Spring 事务传播行为

    如果对事务不了解的可以先看下 我的上一篇文章 数据库事务详解 概述 一般SSH的项目都是使用三层架构即Controller Services DAO Spring 的事务一般都在Services定义 而Controller DAO都不定义事
  • LVGL入门 常用的几个命令(个人笔记)

    前言 学习LVGL的过程中 常常知道有这个命令 也知道大概怎么用 但总想不起来命令叫什么 在整个库中找也显得麻烦 搞得每次写程序还要翻之前的Demo 所以在这里将学习过程中用到的命令 存放在这里 方便再使用的时候方便的找到命令名字 lv o
  • 深度学习速成(11)BiLSTM

    BiLSTM即双向长短期记忆网络 Bidirectional Long Short Term Memory BiLSTM 最早由J rgen Schmidhuber和Sepp Hochreiter等人于1997年在论文 Long short
  • 激光雷达与相机外参标定(附open3d python代码)

    现在的激光雷达与相机的标定程序基本都是Ubuntu框架下面的 并且都是C 代码 需要安装的依赖也比较复杂 于是自己写了一个python版本的标定程序 依赖非常简单 Windows系统也可以运行 并且代码简单一个文件搞定 符合python简单
  • 2.2 面向对象(分类和static)

    1 案例驱动模式 1 1案例驱动模式概述 理解 通过我们已掌握的知识点 先实现一个案例 然后找出这个案例中 存在的一些问题 在通过新知识点解决问题 1 2案例驱动模式的好处 理解 解决重复代码过多的冗余 提高代码的复用性 解决业务逻辑聚集紧
  • uniapp小程序,根据小程序的环境版本,控制的显页面功能按钮的示隐藏

    需求 根据小程序环境控制控制页面某个功能按钮的显示隐藏 下面是官方文档和功能实现的相关代码 实现上面需要 用到了uni getAccountInfoSync uni getAccountInfoSync 是一个 Uniapp 提供的同步方法
  • qnap 文件传输服务器,如何将 QNAP NAS 作为 RADIUS 服务器使用?

    QNAP NAS 的远程身份验证拨入用户服务 RADIUS 服务器功能可以为要连接并使用网络服务的计算机提供集中身份验证和授权管理 系统用户帐户仅支持 PAP EAP TLS PAP 和 EAP TTLS PAP 身份验证 仅支持 WPA
  • 使用Electron打包Http地址为应用程序

    使用Electron打包Http地址为应用程序 NodeJS环境安装 下载NodeJS 安装NodeJS 配置镜像地址 配置npm镜像地址 配置Electron镜像地址 编辑项目配置文件 编辑package js文件 编辑main js文件
  • react路由根据用户角色设置权限校验

    react路由根据用户角色设置权限校验 前言 做前端项目的时候 我们经常会有这样的情况 一个系统会有多种权限不同的角色 每个角色都有自己能访问的模块角色间能访问的模块 页面 并不完全相同 因此我们经常会有根据不同的角色管理不同的给 每个路由
  • 学习SVG(九)裁剪和蒙版

    裁剪 使用clipPath元素创建裁剪区域 区域内的部分显示 区域外的隐藏
  • WIN11任务栏出现空白,卡任务栏的解决办法

    WIN11全球出现BUG 具体现象是卡任务栏 任务栏显示空白 一直卡着 出现今天这个问题的原因是微软授时服务器出现故障 所以按Ctrl Alt Delete进入任务管理器 左上角新建任务输入 control exe 打开控制面板 在控制面板
  • Advanced Level 1001 A+B Format (20 point(s))

    PAT甲级系列 PAT Advanced Level 文章目录 英文 Title Input Specification Output Specification Sample Input Sample Output 中文 题目 输入格式
  • Java List<Map<String, Object>> 排序

    name key值 List
  • TypeError: decoding str is not supported

    打开文件报错 修改后代码如下 fi open D 文件下载 sensor txt rb fo open D 文件下载 earpa001 txt wt for line in fi ls str line encoding utf 8 str
  • /var/run/yum.pid 已被锁定,PID 为 8843 的另一个程序正在运行

    原因 yum处于锁定状态中 解决方法 强制关掉yum进程 直接在终端运行命令将该文件删除 然后再次运行yum即可 命令 rm f var run yum pid
  • React中监听鼠标滚轮事件

    设计师要求首页轮播图加上滚动监听 撸完代码揪出来个demo const rdom require react dom class Hello extends React Component render handleScroll e con
  • next和hasnext_使用Java中的next()和hasNext()方法遍历List元素

    next和hasnext Given a List of integers and we have to traverse print all its element using next and hasNext methods 给定一个整
  • C# 生成网站不报错,发布网站时报错

    这个问题困扰了几天 几天早上起来突然灵感再现 查找原因发现 生成好的BLL点击发布时又会还原到之前的版本 查看bll发现里面的方法又恢复到之前的版本了 所以会报错提示update方法不存在2个参数 打开报错的文件夹 发现居然是在debug里
  • 《零基础入门学习Python》第088讲:Pygame:摩擦摩擦

    Play The Ball 这个小游戏现在已经有了背景音乐 有了小球 有了碰撞检测 接下来我们要做的就是摩擦摩擦 我们有一块玻璃面板的图片 如下图所示 为了方便 我把文字也打上去了 是透明的哦 还是老样子 有需要素材的可以在评论区留下邮箱或