mirror of
https://github.com/TeamPGM/PagerMaid_Plugins_Pyro.git
synced 2024-11-16 08:19:25 +00:00
1A2B Play a game of 1A2B
This commit is contained in:
parent
ace5189ae5
commit
5b1449fd10
81
1A2B/main.py
Normal file
81
1A2B/main.py
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
import secrets
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
from pagermaid.enums import Message
|
||||||
|
from pagermaid.listener import listener
|
||||||
|
|
||||||
|
games = {}
|
||||||
|
|
||||||
|
|
||||||
|
class Game:
|
||||||
|
password: List[int]
|
||||||
|
times: int
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.times = 0
|
||||||
|
self.gen_password()
|
||||||
|
|
||||||
|
def gen_password(self):
|
||||||
|
ans = []
|
||||||
|
while len(ans) != 4:
|
||||||
|
n = secrets.choice(range(10))
|
||||||
|
if n not in ans:
|
||||||
|
ans.append(n)
|
||||||
|
self.password = ans
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def check_input(answer: str):
|
||||||
|
numbers = " ".join(answer).split()
|
||||||
|
if len(numbers) != 4:
|
||||||
|
return False
|
||||||
|
data = [0, 0, 0, 0]
|
||||||
|
for i in range(4):
|
||||||
|
data[i] = int(numbers[i])
|
||||||
|
return data
|
||||||
|
|
||||||
|
def check_answer(self, answer: str):
|
||||||
|
nums = self.check_input(answer)
|
||||||
|
if not nums:
|
||||||
|
raise ValueError("Invalid input")
|
||||||
|
a, b = 0, 0
|
||||||
|
for n in nums:
|
||||||
|
if n in self.password:
|
||||||
|
if nums.index(n) == self.password.index(n):
|
||||||
|
a += 1
|
||||||
|
else:
|
||||||
|
b += 1
|
||||||
|
self.times += 1
|
||||||
|
return a, b
|
||||||
|
|
||||||
|
|
||||||
|
@listener(command="1A2B",
|
||||||
|
groups_only=True,
|
||||||
|
description="Play a game of 1A2B",
|
||||||
|
usage="<start/stop/answer>")
|
||||||
|
async def play_game_1a2b(message: Message):
|
||||||
|
if not message.arguments:
|
||||||
|
return await message.edit("Please specify a command.")
|
||||||
|
game = games.get(message.chat.id, None)
|
||||||
|
if message.arguments == "start":
|
||||||
|
if game:
|
||||||
|
return await message.edit("Game already started.")
|
||||||
|
games[message.chat.id] = Game()
|
||||||
|
return await message.edit("Game started.")
|
||||||
|
if message.arguments == "stop":
|
||||||
|
if not game:
|
||||||
|
return await message.edit("Game not started.")
|
||||||
|
del games[message.chat.id]
|
||||||
|
return await message.edit("Game stopped.")
|
||||||
|
if message.arguments == "answer":
|
||||||
|
if not game:
|
||||||
|
return await message.edit("Game not started.")
|
||||||
|
answer = "".join(map(str, game.password))
|
||||||
|
return await message.edit(f"The answer is: {answer}\n\nGame over.")
|
||||||
|
if game:
|
||||||
|
try:
|
||||||
|
a, b = game.check_answer(message.arguments)
|
||||||
|
except ValueError:
|
||||||
|
return await message.edit("You need to guess 4 numbers between 0 ~ 9.\nFor example: 1234")
|
||||||
|
if a == 4:
|
||||||
|
return await message.edit("You Win!\n\nGame over.")
|
||||||
|
return await message.edit("%d: %dA%dB" % (game.times, a, b))
|
10
list.json
10
list.json
@ -459,6 +459,16 @@
|
|||||||
"supported": true,
|
"supported": true,
|
||||||
"des-short": "解除封禁一位用户。",
|
"des-short": "解除封禁一位用户。",
|
||||||
"des": "解除封禁一位用户。指令:,unban"
|
"des": "解除封禁一位用户。指令:,unban"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "1A2B",
|
||||||
|
"version": "1.0",
|
||||||
|
"section": "chat",
|
||||||
|
"maintainer": "xtaodada",
|
||||||
|
"size": "2.49 kb",
|
||||||
|
"supported": true,
|
||||||
|
"des-short": "Play a game of 1A2B",
|
||||||
|
"des": "Play a game of 1A2B, command:,1a2b"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user