MC.Steve 发表于 5 天前

妇女节礼物!

本帖最后由 不二如是 于 2026-3-9 08:08 编辑

妇女节礼物(代码)
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()

FishC 发表于 5 天前

妇女节礼物(代码)
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 小助理,如未能正确解答您的问题,请继续追问。

糖逗 发表于 4 天前

{:10_254:}

不二如是 发表于 4 天前

{:10_257:}

快速收敛 发表于 4 天前

{:10_257:}

sunshine_8205 发表于 4 天前

{:5_106:}
页: [1]
查看完整版本: 妇女节礼物!