|
|
妇女节礼物(代码)
python:
import turtle
import random
# --- 第一部分:隐藏的加密逻辑 (核心) ---
def encrypt_message(text, shift):
"""凯撒密码加密函数"""
encrypted = ""
for char in text:
if char.isalpha():
# 转换为小写并进行位移
base = ord('a')
encrypted += chr((ord(char.lower()) - base + shift) % 26 + base)
else:
encrypted += char
return encrypted
# 真正的祝福语
SECRET_MESSAGE = "Happy Women's Day! You are amazing!"
# 设定一个只有你知道的偏移量(这就是解密钥匙)
SHIFT_KEY = 7
# 加密后的乱码(会在画布上显示)
ENCRYPTED_TEXT = encrypt_message(SECRET_MESSAGE, SHIFT_KEY)
# --- 第二部分:Turtle 绘图 (视觉效果) ---
def draw_puzzle():
screen = turtle.Screen()
screen.setup(800, 600)
screen.bgcolor("#1a1a2e")
screen.title("3.8 妇女节特别礼物:解密迷宫")
pen = turtle.Turtle()
pen.speed(0) # 最快速度
pen.hideturtle()
pen.width(2)
# 1. 画一个复杂的几何背景 (象征生活中的挑战与美丽)
for i in range(100):
pen.penup()
pen.goto(random.randint(-300, 300), random.randint(-200, 200))
pen.pendown()
# 随机颜色
pen.color(random.random(), random.random(), random.random())
# 画随机形状
for _ in range(4):
pen.forward(random.randint(50, 150))
pen.right(90 + random.randint(-10, 10))
# 2. 画出“迷宫路径” (象征寻找答案的过程)
pen.penup()
pen.goto(-350, -250)
pen.pendown()
pen.color("#00ffcc")
pen.width(3)
# 画一条蜿蜒的蛇形路径
for x in range(-350, 350, 10):
y = 100 * (x / 350) ** 2 # 抛物线轨迹
pen.goto(x, y - 100)
# 3. 在路径上写入加密的密文 (伪装成坐标或乱码)
pen.penup()
pen.goto(-300, 0)
pen.color("white")
pen.write("谜题:请破解这段乱码:", align="left", font=("Arial", 16, "bold"))
pen.goto(-300, -50)
# 这里显示的是加密后的乱码,看起来像是一串无意义的字符
pen.write(f"密文: {ENCRYPTED_TEXT}", align="left", font=("Courier", 14, "normal"))
pen.goto(-300, -100)
pen.write("提示:凯撒密码,钥匙是2位数。", align="left", font=("Arial", 12, "normal"))
# 4. 最后的交互环节
try:
guess = int(screen.numinput("解密挑战", "请输入偏移量(0-25)来解密:", minval=0, maxval=25))
if guess == SHIFT_KEY:
pen.clear()
pen.goto(0, 0)
pen.color("#ff6b6b")
style = ('Arial', 24, 'bold')
pen.write(f"恭喜解密成功!\n\n{SECRET_MESSAGE}", align="center", font=style)
# 庆祝动画
celebrate(screen)
else:
pen.goto(0, -150)
pen.color("red")
pen.write("尝试失败,再试一次!", align="center", font=("Arial", 16, "bold"))
except:
pass
def celebrate(screen):
"""解密成功后的庆祝烟花"""
firework = turtle.Turtle()
firework.hideturtle()
firework.speed(0)
turtle.write('妇女节快乐', move=False, align='center', font=('Arial', 8, 'normal'))
for _ in range(20):
firework.penup()
firework.goto(random.randint(-300, 300), random.randint(-200, 200))
firework.pendown()
firework.color(random.random(), random.random(), random.random())
for _ in range(36):
firework.forward(30)
firework.backward(30)
firework.right(10)
turtle.done()
# --- 主程序 ---
if __name__ == "__main__":
draw_puzzle()
感谢分享这段有趣的妇女节礼物代码!这是一个使用 Python 的 turtle 图形库制作的解密游戏。下面我来简要解释一下代码的功能和运行方式:
代码功能:
1. 加密逻辑: 使用凯撒密码将一句祝福语 Happy Women's Day! You are amazing! 加密,偏移量(密钥)为 7。
2. 绘图部分: 使用 turtle 绘制一个带有复杂几何背景和迷宫路径的窗口,并显示加密后的密文。
3. 交互解密: 弹出一个输入框让用户猜测偏移量,如果输入正确(7),则会显示解密成功的祝福语并播放庆祝烟花;否则提示失败。
如何运行:
1. 确保你安装了 Python(通常自带 turtle 库)。
2. 将代码保存为一个 .py 文件(例如 women_day_gift.py)。
3. 运行该文件,会弹出一个图形窗口。
4. 按照提示,在输入框中输入偏移量(0-25 之间的整数)进行解密。
注意事项:
- 该程序需要图形界面支持,如果你在命令行环境运行,请确保有可用的图形显示(例如 Windows 的 GUI、macOS 或 Linux 的 X11)。
- 代码中的加密只针对字母字符,非字母字符(如空格和标点)保持不变。
- 庆祝烟花部分会持续一段时间,你可以关闭窗口来结束程序。
这是一个很有创意的礼物,结合了编程、密码学和图形绘制,让接收者通过互动来获取祝福!如果你在运行过程中遇到任何问题,欢迎继续提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|