• 梅美美🥰
    2022-12-15 来自广东
    为什么向下的时候第一层循环时2,1,0,不是0,1,2?

    作者回复: 用print()将坐标打印出来,你会发现如果是012,判断的时候会遇到判断条件不完整的问题,得再增加额外的判断条件。所以我偷懒,反过来使用了210

    
    
  • yanyu-xin
    2023-01-24 来自广东
    from pynput.keyboard import Key, Listener, KeyCode import random volume = 100 # 初始血量 print(f'初始血量是:{volume}') def on_press(key): global volume #血量为全局变量 if key == KeyCode.from_char('+'): # 按键 ‘+’ 处理部分 ran_valume = random.randint(1, 100) # 随机数 volume = volume + ran_valume # 加血 if volume > 100 : # 大于100,按100处理 volume = 100 print(f'血量为:{ volume} ') elif key == KeyCode.from_char('-'): # 按键 ‘-’ 处理部分 ran_valume = random.randint(1, 100) # 随机数 volume = volume - ran_valume # 减血 if volume < 0 : # 小于0,按0处理 volume = 0 print(f'血量为:{ volume} ') if volume == 0 : # 小于等于 0 结束 print('游戏结束') exit(-1) # 退出程序 elif key == KeyCode.from_char('q'): # 按 q 键退出程序 exit(-1) with Listener(on_press=on_press) as listener: # 按键处理 listener.join()
    展开
    
    1
  • 江江儿嘛哩哄
    2022-12-29 来自浙江
    from pynput.keyboard import Key, Listener, KeyCode import random import sys #sys为结束整个程序 number = 100 def on_press(key): #gobal用来申明number为全局变量,可在函数内对函数外对number进行操作 global number if key == KeyCode.from_char('+'): number = number + int(random.randint(1,100)) if number >= 100: number = 100 print(f"已达到最大血量{number},游戏继续") else: print(f"血量增加,现在血量:{number},游戏继续") if key == KeyCode.from_char('-'): number =number - int(random.randint(1,100)) if number <= 0 : number = 0 print("血量已耗尽,游戏结束!") sys.exit() #此时自动结束并退出游戏 else: print(f"血量减少,现在血量:{number},游戏继续") print() with Listener(on_press = on_press) as listener: listener.join()
    展开
    
    1
  • Calvin
    2022-12-16 来自广东
    import random import sys from pynput.keyboard import Listener, KeyCode bg: list[list[int | str]] = [[0, 0, 0], [0, 'x', 0], [0, 0, 0]] blood = 100 def print_bg(): for x in bg: print(x[0], x[1], x[2]) print_bg() def on_press(key): global blood if key == KeyCode.from_char('a'): for i in 0, 1, 2: for j in 0, 1, 2: if bg[i][j] == 'x' and j > 0: bg[i][j] = 0 bg[i][j - 1] = 'x' elif key == KeyCode.from_char('d'): for i in 0, 1, 2: for j in 2, 1, 0: if bg[i][j] == 'x' and j < 2: bg[i][j] = 0 bg[i][j + 1] = 'x' elif key == KeyCode.from_char('w'): for i in 0, 1, 2: for j in 0, 1, 2: if bg[i][j] == 'x' and i > 0: bg[i][j] = 0 bg[i - 1][j] = 'x' elif key == KeyCode.from_char('s'): for i in 2, 1, 0: for j in 0, 1, 2: if bg[i][j] == 'x' and i < 2: bg[i][j] = 0 bg[i + 1][j] = 'x' elif key == KeyCode.from_char('+'): blood += random.randint(0, 100) if blood > 100: blood = 100 print(f"血量增加,当前血量 {blood},游戏继续 :-)") elif key == KeyCode.from_char('-'): blood -= random.randint(0, 100) if blood < 0: blood = 0 print(f"血量不足,当前血量 {blood},游戏结束 :'-(") sys.exit() print(f"血量减少,当前血量 {blood},游戏继续 :-(") print() print_bg() with Listener(on_press=on_press) as listener: listener.join()
    展开
    
    1
  • 不再是入门水平pytho...
    2023-08-15 来自上海
    from pynput.keyboard import Key, Listener, KeyCode import random background = [[0,0,0], [0,"x",0], [0,0,0]] # 初始化血量 health = 100 def on_press(key): global health if key == KeyCode.from_char("w"): for i in 0,1,2: for j in 0,1,2: if background[i][j] == "x" and i > 0: background[i][j] = 0 background[i-1][j] = "x" elif key == KeyCode.from_char("s"): for i in 2,1,0: for j in 0,1,2: if background[i][j] == "x" and i < 2: background[i][j] = 0 background[i+1][j] = "x" break elif key == KeyCode.from_char("a"): for i in 0,1,2: for j in 0,1,2: if background[i][j] == "x" and j > 0: background[i][j] = 0 background[i][j-1] = "x" break elif key == KeyCode.from_char("d"): for i in 2,1,0: for j in 0,1,2: if background[i][j] == "x" and j < 2: background[i][j] = 0 background[i][j+1] = "x" break elif key == KeyCode.from_char("+"): health += random.randint(1,100) if health > 100: health = 100 elif key == KeyCode.from_char("-"): health -= random.randint(1,100) if health < 0: print("Game Over,your health is 0") return False print() for site in background: print(site) print(f"health:",{health}) with Listener(on_press=on_press) as listener: listener.join()
    展开
    
    
  • Greenery
    2023-07-16
    from pynput.keyboard import Key, Listener, KeyCode from random import random blood = 1000 # 总血量[0,1000] def on_press(key): global blood delta = int(random() * 100 + 1) if key == KeyCode.from_char('+'): blood += delta blood = blood if blood < 1000 else 1000 print(f"加血{delta}总血{blood}") elif key == KeyCode.from_char('-'): blood -= delta blood = blood if blood > 0 else 0 print(f"扣血{delta}总血{blood}") if blood <= 0: quit() with Listener(on_press=on_press) as listener: listener.join()
    
    
  • Geek_Mike
    2023-06-29 来自云南
    #控制飞机的血量 from pynput.keyboard import Key, Listener, KeyCode import random hp = 100 def on_press(key): while hp > 0: if key == KeyCode.from_char('+') and hp == 100: print(f'当前HP是{hp}') elif key == KeyCode.from_char('+') and hp < 100: random_hp = random.randint(1,100) hp = hp + random_hp if hp < 100: print(f'当前HP是{hp}') else: print('当前HP是100') elif key == KeyCode.from_char('-'): random_hp = random.randint(1,100) hp = hp - random_hp print(f'当前HP是{hp}') print('当前HP为0,游戏结束') 因为技术原因在电脑上执行不了,用AI模拟了一下执行结果是正确的
    
    
  • 陈小菡
    2023-06-20 来自四川
    blood = 100 print(f"你的初始血量为{blood}") def on_press(key): global blood if key == KeyCode.from_char('+') and blood < 100: blood += random.randint(1, 100) if blood >= 100: blood = 100 print(f"你已加血,当前血量为{blood}") elif key == KeyCode.from_char('-') and blood > 0: blood -= random.randint(1, 100) if blood <= 0: blood = 0 print("你已死亡,游戏结束") exit(-1) else: print(f"你受到攻击,当前血量为{blood}") with Listener(on_press=on_press) as listener: listener.join()
    
    
  • 黄英镑
    2023-05-26 来自广东
    import random from pynput import keyboard background = [[0, 0, 0], [0, 1, 0], [0, 0, 0]] life = 100 def go_up(): for i, row in enumerate(background): for (j, location) in enumerate(row): if location and i > 0: background[i][j] = 0 background[i - 1][j] = 1 break def go_left(): for i, row in enumerate(background): for (j, location) in enumerate(row): if location and j > 0: background[i][j] = 0 background[i][j - 1] = 1 break def go_down(): moved = False for i, row in enumerate(background): for (j, location) in enumerate(row): if location and i < (len(background) - 1): background[i][j] = 0 background[i + 1][j] = 1 moved = True break if moved: break def go_right(): for i, row in enumerate(background): for (j, location) in enumerate(row): if location and j < (len(row) - 1): background[i][j] = 0 background[i][j + 1] = 1 break def on_release(key): global life if key == keyboard.KeyCode.from_char('+'): if life < 100: life += random.randint(1, (100 - life)) elif key == keyboard.KeyCode.from_char('-'): if life > 0: life -= random.randint(1, life) elif key == keyboard.Key.up: go_up() elif key == keyboard.Key.left: go_left() elif key == keyboard.Key.down: go_down() elif key == keyboard.Key.right: go_right() print('当前位置:') for row in background: print(row) print(f'当前血量:{life}') if life == 0: print('游戏结束!') return False with keyboard.Listener(on_release=on_release) as listener: listener.join()
    展开
    
    
  • sunny
    2023-02-02 来自江苏
    # 血量增减 # pip3 install pynput from pynput.keyboard import Key, Listener, KeyCode import random blood = 100 def on_press(key): global blood #不加global的时候,在函数内部是改不了外面的全局变量的 if key == KeyCode.from_char('u'): #加血 ra = random.random() change_blood = int(random.random() * 100 + 1) blood = blood + change_blood if blood < 100: print(f"blood is {blood},continue") else: blood = 100 print(f"blood is {blood},continue") elif key == KeyCode.from_char('d'): #减血 ra = random.random() change_blood = int(random.random() * 100 + 1) blood = blood - change_blood if blood > 0: print(f"blood is {blood},continue") else: blood = 0 print(f"your blood is {blood},gameover") exit(0) with Listener(on_press=on_press) as listener: listener.join()
    展开
    
    