用python自制简单小游戏----Pyinstaller库

发布于:2025-07-19 ⋅ 阅读:(18) ⋅ 点赞:(0)

目录

一、简单介绍Pyinstaller库

主要特点

基本使用方法

打包流程说明

注意事项

二、实例演示

1、井字棋

2、猜单词

3、猜数字

三、找到自己打包的可执行文件

现在你就会自己做小游戏了,快去和你的小伙伴分享吧


在编程的世界里,没有什么比亲手打造一款属于自己的小游戏更能带来成就感了。当一行行代码在屏幕上跳动,最终幻化成可以操作的角色、有趣的关卡时,那种从 0 到 1 的创造喜悦,足以让每个开发者为之着迷。

而 Python,凭借其简洁易懂的语法和丰富的库支持,成为了入门级游戏开发的绝佳选择。无论是用 Pygame 构建 2D 像素世界,还是借助其他库实现简单的交互逻辑,Python 都能让我们快速上手,将创意转化为实际可玩的作品。

但此时,一个新的问题会浮现在我们脑海:如何把精心制作的小游戏分享给身边的朋友呢?总不能让每个人都先安装 Python 环境,再运行代码吧?这时候,PyInstaller 库就像一位得力的助手,帮我们解决了这个难题。它能将 Python 脚本打包成独立的可执行文件,让你的游戏摆脱环境限制,轻松在不同电脑上运行。

今天,就让我们一起走进用 Python 自制简单小游戏的世界,并深入了解 PyInstaller 库是如何让我们的作品更便于传播和分享的。

一、简单介绍Pyinstaller库

PyInstaller 是一个非常实用的 Python 库,它可以将 Python 脚本打包成独立的可执行文件(.exe、.app 等),让用户无需安装 Python 解释器和相关依赖就能运行程序。

主要特点

  1. 跨平台支持:可以在 Windows、macOS 和 Linux 系统上使用
  2. 生成单一可执行文件:将所有依赖打包到一个文件中,方便分发
  3. 支持多种打包模式:单文件模式、文件夹模式等
  4. 自动处理依赖:会分析脚本依赖的库并一同打包

基本使用方法

1、安装 PyInstaller:

pip install pyinstaller

2、基本打包命令:

# 生成文件夹模式(默认)
pyinstaller your_script.py

# 生成单文件模式
pyinstaller --onefile your_script.py

# 不显示控制台窗口(Windows)
pyinstaller --onefile --windowed your_script.py

打包软件
Pyinstaller  -F 代码文件地址+代码文件名

3、常用参数:

  1. --onefile:打包成单个可执行文件
  2. --name:指定输出文件的名称
  3. --icon:指定程序图标
  4. --hidden-import:手动指定隐藏的导入
  5. --distpath:指定输出目录

打包流程说明

  1. 执行打包命令后,会生成三个主要部分:

    • dist 文件夹:包含最终生成的可执行文件
    • build 文件夹:包含打包过程中的临时文件
    • .spec 文件:打包配置文件
  2. 对于复杂项目,可以通过编辑 .spec 文件来进行更精细的配置

注意事项

  • 某些库可能需要特殊处理才能正确打包
  • 打包后的文件体积通常会比较大,因为包含了 Python 解释器和所有依赖
  • 不同操作系统上打包的文件不能跨平台使用
  • 可能需要处理数据文件、资源文件的路径问题

二、实例演示

1、井字棋

打包代码(换成自己的python代码位置)(所有打包代码均在终端运行)

Pyinstaller  -F W:\学徒\工程\2\游戏\井字棋.py
直接打包
Pyinstaller -i C:\Users\31253\Desktop\mmm.ico -F W:\学徒\工程\2\游戏\井字棋.py
添加封面图片

可以添加软件图片(必须使ico格式的)

没有的可以去这个网站转化

https://www.xbgjw.com/ico

代码

import sys


def print_board(board):
    print("\n  1 2 3")
    for i, row in enumerate(board):
        print(f"{i + 1} {' '.join(row)}")
    print()


def check_winner(board):
    # 检查行
    for row in board:
        if row[0] == row[1] == row[2] and row[0] != ' ':
            return row[0]

    # 检查列
    for col in range(3):
        if board[0][col] == board[1][col] == board[2][col] and board[0][col] != ' ':
            return board[0][col]

    # 检查对角线
    if board[0][0] == board[1][1] == board[2][2] and board[0][0] != ' ':
        return board[0][0]
    if board[0][2] == board[1][1] == board[2][0] and board[0][2] != ' ':
        return board[0][2]

    # 检查平局
    if all(cell != ' ' for row in board for cell in row):
        return 'tie'

    return None


def get_move(player, board):
    while True:
        try:
            move = input(f"玩家 {player} 的回合 (行 列): ").split()
            if len(move) != 2:
                raise ValueError("请输入行和列,用空格分隔")

            row, col = int(move[0]) - 1, int(move[1]) - 1

            if 0 <= row <= 2 and 0 <= col <= 2:
                if board[row][col] == ' ':
                    return row, col
                else:
                    print("该位置已被占用!")
            else:
                print("请输入1-3之间的数字!")
        except (ValueError, IndexError):
            print("输入无效,请重试!")


def main():
    print("欢迎来到井字棋游戏!")
    print("玩家1使用 X,玩家2使用 O")
    print("输入格式:行 列 (例如:1 3 表示第一行第三列)")

    while True:
        board = [[' ' for _ in range(3)] for _ in range(3)]
        current_player = 'X'

        while True:
            print_board(board)
            row, col = get_move(current_player, board)
            board[row][col] = current_player

            winner = check_winner(board)
            if winner:
                print_board(board)
                if winner == 'tie':
                    print("平局!")
                else:
                    print(f"玩家 {winner} 获胜!")
                break

            current_player = 'O' if current_player == 'X' else 'X'

        if input("再玩一局?(y/n): ").lower() != 'y':
            print("感谢游玩!")
            sys.exit()


if __name__ == "__main__":
    main()

2、猜单词

打包代码(记得换成自己的地址)

Pyinstaller  -F W:\学徒\工程\2\游戏\猜单词.py
直接打包
Pyinstaller -i C:\Users\31253\Desktop\mmm.ico -F W:\学徒\工程\2\游戏\猜单词.py
添加封面图片

代码(可以自己添加单词库的内容,以数组的格式添加)

import random


def word_guessing_game():
    # 游戏配置
    WORDS = ["absorb", "accompany", "accomplish", "acknowledge", "activate", "adapt", "adjust", "admire", "admit", "adopt",
    "advance", "affect", "announce", "anticipate", "apologize", "applaud", "appreciate", "approach", "approve", "arrange",
    "assemble", "assess", "assign", "assist", "assume", "astonish", "attach", "attract", "avenge", "awaken",
    "balance", "banish", "bargain", "bark", "bathe", "behave", "bend", "betray", "blame", "bless",
    "bother", "bounce", "browse", "brush", "burst", "calculate", "camp", "cancel", "capture", "carve",
    "celebrate", "challenge", "charge", "chase", "cheat", "cheer", "clap", "classify", "climb", "clinch",
    "coach", "collapse", "combine", "comfort", "communicate", "compete", "complain", "complete", "comprehend", "concentrate",
    "concern", "confess", "confirm", "conflict", "confuse", "connect", "consider", "construct", "contact", "contain",
    "continue", "contract", "contrast", "contribute", "convince", "copy", "correct", "cost", "count", "cover",
    "crash", "create", "cross", "crowd", "cure", "damage", "dare", "decorate", "define", "deliver",
    "demand", "deny", "depart", "depend", "deposit", "derive", "design", "desire", "destroy", "determine",
    "develop", "devote", "digest", "direct", "disagree", "disappear", "disappoint", "discover", "discuss", "dismiss",
    "distribute", "dive", "divide", "dominate", "doubt", "drain", "drift", "drip", "drown", "dye",
    "earn", "echo", "edit", "educate", "effect", "elect", "eliminate", "embarrass", "emphasize", "enable",
    "encourage", "endure", "enforce", "engage", "enlarge", "enlighten", "enlist", "enrich", "ensure", "entertain",
    "entitle", "entrust", "envy", "equal", "equip", "escape", "establish", "estimate", "evaluate", "evolve",
    "examine", "exceed", "exchange", "excite", "exclude", "excuse", "execute", "exercise", "exhaust", "exist",
    "expand", "expect", "explain", "explode", "export", "express", "extend", "extract", "fade", "fail",
    "fasten", "favor", "fear", "feature", "feed", "feel", "fight", "fill", "find", "finish",
    "fix", "flap", "flee", "float", "flock", "flow", "fluctuate", "focus", "fold", "follow",
    "fool", "force", "forget", "forgive", "form", "found", "freeze", "gather", "gaze", "generate",
    "gesture", "glance", "govern", "grab", "grade", "grant", "grasp", "greet", "grieve", "grow",
    "guess", "guide", "harm", "hate", "head", "heal", "hear", "heat", "help", "hesitate",
    "hide", "highlight", "hire", "hit", "hold", "honor", "hope", "host", "hurry", "identify",
    "ignore", "illustrate", "imitate", "imagine", "impose", "improve", "include", "increase", "indicate", "inflate",
    "inform", "inherit", "inspect", "inspire", "install", "instruct", "intend", "interrupt", "introduce", "invite",
    "involve", "issue", "jail", "jam", "joke", "judge", "jump", "justify", "keep", "kick",
    "kill", "kiss", "knit", "know", "label", "lack", "ladder", "lag", "laugh", "lay",
    "lead", "lean", "leap", "learn", "leave", "lecture", "legalize", "lend", "length", "lessen",
    "let", "lie", "lift", "light", "like", "limit", "listen", "live", "load", "locate",
    "lock", "log", "look", "loosen", "love", "lower", "luck", "lump", "lure", "maintain",
    "major", "make", "manage", "mar", "mark", "marry", "mask", "match", "mate", "maximize",
    "mean", "measure", "meet", "melt", "memorize", "mention", "merge", "mess", "metal", "meter",
    "middle", "migrate", "milk", "mind", "mine", "minimize", "mirror", "miss", "mix", "model",
    "modify", "moist", "mold", "moment", "monitor", "monkey", "mood", "moon", "mop", "moral",
    "more", "motion", "motivate", "mourn", "move", "multiply", "murder", "muscle", "mute", "name",
    "narrow", "nation", "nature", "near", "need", "neglect", "negotiate", "nest", "net", "network",
    "neutralize", "never", "new", "nick", "nudge", "nurse", "object", "observe", "obtain", "occupy",
    "occur", "offer", "offend", "omit", "open", "operate", "oppose", "opt", "order", "organize",
    "originate", "ought", "outcome", "outline", "output", "outrage", "outside", "overcome", "overhear", "overlook",
    "owe", "own", "pack", "pad", "paint", "pair", "pal", "pan", "pant", "paper",
    "parade", "parallel", "park", "parrot", "part", "participate", "partner", "party", "pass", "paste",
    "patch", "path", "pause", "pay", "peace", "peek", "pen", "pencil", "perceive", "perform",
    "permit", "persist", "person", "persuade", "pet", "phase", "phone", "photograph", "pick", "pile",
    "pill", "pilot", "pin", "pine", "pink", "pint", "pipe", "pitch", "place", "plan",
    "plant", "play", "please", "pledge", "plot", "plug", "plus", "pocket", "point", "poison",
    "polish", "pollute", "pond", "pool", "poor", "pop", "pour", "powder", "power", "practice",
    "praise", "pray", "preach", "prepare", "preserve", "press", "pretend", "prevent", "price", "pride",
    "print", "prioritize", "prison", "privilege", "probable", "problem", "process", "produce", "profit", "program",
    "project", "promote", "prompt", "proof", "propel", "proper", "protect", "protest", "provide", "prove",
    "public", "publish", "pull", "pulse", "pump", "punish", "purchase", "purple", "purpose", "push",
    "put", "qualify", "quarrel", "quarter", "question", "quick", "quit", "quote", "race", "radiate",
    "raise", "rake", "ram", "range", "rank", "rapid", "rare", "rate", "reach", "react",
    "read", "ready", "realize", "reap", "rearrange", "reason", "reassure", "rebel", "recall", "receive",
    "recent", "recharge", "recognize", "recommend", "record", "recover", "redden", "reduce", "refer", "reflect",
    "reform", "refuse", "regard", "regret", "regular", "reign", "reinforce", "reject", "relate", "release",
    "relieve", "rely", "remain", "remember", "remind", "remove", "render", "renew", "rent", "repair",
    "repeat", "replace", "reply", "report", "represent", "reproduce", "research", "resemble", "resign", "resist",
    "resolve", "resource", "respect", "respond", "responsible", "rest", "restore", "restrict", "result", "retail",
    "retain", "retire", "return", "reveal", "review", "reward", "rhyme", "rice", "rich", "ride",
    "right", "ring", "rip", "rise", "risk", "rival", "roast", "rob", "rock", "roll",
    "romance", "roof", "room", "root", "rotate", "rough", "round", "rouse", "route", "row",
    "rub", "rule", "run", "rush", "rust", "sack", "sail", "salute", "same", "sample",
    "sand", "satisfy", "save", "saw", "say", "scale", "scan", "scare", "scatter", "scene",
    "schedule", "school", "science", "scold", "score", "scrape", "screen", "scrub", "sea", "search",
    "season", "seat", "second", "secret", "section", "secure", "see", "seek", "seem", "segment",
    "select", "sell", "send", "sense", "separate", "serve", "set", "settle", "seven", "sew",
    "shake", "shape", "share", "shave", "shear", "shed", "shine", "ship", "shock", "shoot",
    "shop", "shore", "shorten", "shoulder", "shout", "show", "shove", "shrink", "shrug", "shuffle",
    "shut", "shy", "sick", "side", "sign", "signal", "silence", "simplify", "sing", "sink",
    "sit", "situate", "size", "skate", "sketch", "ski", "skip", "skirt", "skull", "slap",
    "sleep", "slide", "slip", "slow", "small", "smash", "smell", "smile", "smoke", "smooth",
    "snake", "snap", "snatch", "snow", "soak", "soap", "sock", "soften", "soil", "solve",
    "some", "sort", "sound", "soup", "source", "south", "space", "spare", "spark", "speak",
    "specialize", "speed", "spell", "spend", "sphere", "spill", "spin", "spirit", "split", "spoil",
    "sponsor", "spoon", "sport", "spot", "spray", "spread", "spring", "sprint", "spur", "spy",
    "square", "squeeze", "stab", "stack", "staff", "stage", "stain", "stair", "stamp", "stand",
    "start", "state", "station", "stay", "steal", "steam", "steel", "steer", "stem", "step",
    "stick", "stiff", "still", "stimulate", "sting", "stir", "stock", "stomach", "stone", "stop",
    "store", "storm", "story", "stove", "straighten", "strange", "strap", "strategy", "stream", "street",
    "stretch", "strike", "string", "strip", "strive", "stroke", "structure", "struggle", "study", "stuff",
    "stumble", "stun", "style", "subject", "submit", "subtract", "succeed", "such", "sudden", "suffer",
    "sugar", "suggest", "suit", "sum", "summarize", "sun", "supply", "support", "suppose", "surf",
    "surge", "surprise", "surround", "survey", "suspect", "suspend", "swallow", "swear", "sweat", "sweep",
    "sweeten", "swell", "swim", "swing", "switch", "symbolize", "sympathize", "system", "table", "tackle",
    "tag", "tail", "take", "talk", "tall", "tame", "tap", "target", "task", "taste",
    "tax", "teach", "team", "tear", "technical", "technique", "ted", "telephone", "tell", "tempt",
    "tend", "tense", "term", "terrify", "test", "text", "thank", "that", "theorize", "there",
    "thick", "thin", "think", "thirst", "threaten", "throw", "thumb", "thunder", "tick", "tie",
    "tiger", "tighten", "time", "tip", "tire", "title", "toast", "tobacco", "today", "toddle",
    "toe", "together", "toil", "told", "tomorrow", "tone", "tool", "top", "topic", "torch",
    "toss", "total", "touch", "tour", "toward", "towel", "town", "trace", "track", "trade",
    "traffic", "train", "transfer", "transform", "translate", "transport", "trap", "travel", "tray", "treat",
    "tree", "tremble", "trend", "trial", "tribe", "trick", "trigger", "trim", "trip", "triumph",
    "troop", "trot", "trouble", "truck", "true", "truly", "trumpet", "trust", "truth", "try",
    "tube", "tune", "tunnel", "turn", "tutor", "type", "uglify", "uncover", "undergo", "underline",
    "understand", "undertake", "undo", "unfold", "unite", "unload", "unlock", "unpack", "unscrew", "untie",
    "up", "update", "uphold", "upper", "upset", "urge", "use", "useful", "usual", "vacate",
    "vacuum", "vague", "validate", "value", "vanish", "vary", "vast", "vegetate", "venture", "verify",
    "version", "vest", "vibrate", "vice", "victimize", "view", "visit", "visualize", "vocalize", "vote",
    "wade", "wait", "wake", "walk", "wall", "want", "war", "warm", "warn", "wash",
    "waste", "watch", "water", "wave", "wax", "way", "wear", "weave", "weep", "weigh",
    "welcome", "weld", "well", "west", "wet", "whisper", "whistle", "whip", "whirl", "whisper",
    "white", "who", "whole", "whom", "whose", "why", "wick", "wide", "widen", "wife",
    "wild", "will", "win", "wind", "window", "wine", "wing", "wink", "winner", "winter",
    "wipe", "wire", "wisdom", "wish", "wither", "withhold", "witness", "wolf", "woman", "wonder",
    "wood", "wool", "word", "work", "worm", "worry", "worth", "would", "wound", "wrap",
    "wreck", "wrinkle", "write", "wrong", "yearn", "yield", "zip", "zoom"
       'apple', 'banana', 'grape', 'orange', 'mango', 'lemon'
        "apple", "bird", "book", "car", "chair", "city", "dog", "egg", "family", "flower",\
        "game", "house", "idea", "job", "key", "lake", "mountain", "name", "ocean", "pen",\
        "question", "river", "sun", "tree", "umbrella", "voice", "water", "year", "zoo",\
        "kite", "library", "money", "nose", "orange", "piano", "queen", "rain", "star",\
        "table", "university", "vegetable", "window", "box", "cloud", "door", "elephant",\
        "fire", "garden", "hill", "island", "jacket", "king", "lion", "music", "night",\
        "oath", "paper", "quill", "road", "snake", "train", "umbrella", "valley", "wind",\
        "xylophone", "yacht", "zebra", "actor", "beach", "camera", "doctor", "engine",\
        "friend", "guitar", "hospital", "island", "jungle", "kitchen", "lake", "mountain",\
        "needle", "ocean", "pencil", "rabbit", "school", "teacher", "umbrella", "village",\
        "watch", "box", "cloud", "dress", "elephant", "flower", "guitar", "house", "ice",\
        "jungle", "kite", "lake", "mountain", "nose", "orange", "pen", "rabbit", "sun",\
        "table", "umbrella", "voice", "water", "year", "zoo"\
        "accept", "achieve", "admire", "advise", "afford", "agree", "allow", "answer", "appear", "argue",\
        "arrive", "ask", "attack", "attend", "avoid", "begin", "believe", "belong", "breathe", "bring",\
        "build", "burn", "buy", "call", "care", "carry", "catch", "change", "check", "choose",\
        "claim", "clean", "close", "collect", "come", "compare", "consider", "continue", "control", "cook",\
        "count", "create", "cry", "decide", "defend", "delay", "depend", "describe", "destroy", "develop",\
        "die", "discover", "discuss", "disturb", "doubt", "dream", "drive", "drop", "eat", "educate",\
        "enjoy", "enter", "escape", "expect", "explain", "express", "fail", "fall", "feed", "feel",\
        "fight", "find", "finish", "fix", "fly", "follow", "forget", "forgive", "gather", "give",\
        "go", "grow", "guess", "happen", "have", "hear", "help", "hide", "hit", "hold",\
        "hope", "hurt", "imagine", "improve", "include", "increase", "inform", "insist", "invite", "join",\
        "judge", "keep", "kill", "know", "laugh", "learn", "leave", "lend", "let", "lie",\
        "like", "listen", "live", "load", "love", "make", "manage", "mark", "match", "mean",\
        "meet", "mention", "move", "need", "notice", "obey", "offer", "open", "order", "organize",\
        "pay", "perform", "plan", "play", "point", "prepare", "prevent", "promise", "prove", "provide",\
        "pull", "push", "put", "question", "reach", "read", "realize", "receive", "recognize", "recommend",\
        "reduce", "refuse", "regret", "remember", "remove", "repeat", "report", "request", "rest", "return",\
        "review", "ride", "run", "save", "say", "see", "seem", "sell", "send", "serve",\
        "set", "show", "shut", "sing", "sit", "sleep", "smell", "speak", "spend", "stand",\
        "start", "stay", "stop", "study", "succeed", "suggest", "support", "surprise", "swim", "take",\
        "talk", "teach", "tell", "think", "throw", "touch", "travel", "try", "understand", "use",\
        "wait", "walk", "want", "watch", "wear", "win", "work", "write"] # 单词库[^1]
    MAX_GUESSES = 6  # 最大猜测次数
    HINT_PROMPT_LIMIT = 3  # 提示请求限制

    # 随机选择单词
    secret_word = random.choice(WORDS).lower()
    word_length = len(secret_word)

    # 初始化游戏状态
    guessed_letters = set()
    correct_letters = set()
    guesses_left = MAX_GUESSES
    hint_count = 0

    print(f"欢迎来到猜单词游戏!单词包含{word_length}个字母。你有{MAX_GUESSES}次猜测机会。")

    while guesses_left > 0:
        # 显示当前状态
        display_word = ''.join(
            [letter if letter in correct_letters else '_' for letter in secret_word]
        )
        print(f"\n当前单词: {display_word}")
        print(f"已尝试字母: {' '.join(sorted(guessed_letters))}")
        print(f"剩余尝试次数: {guesses_left}")

        # 玩家输入
        guess = input("请输入一个字母或输入'hint'获取提示: ").lower()

        # 处理提示请求
        if guess == 'hint':
            if hint_count < HINT_PROMPT_LIMIT:
                hint_count += 1
                # 随机显示一个未猜出的字母
                unrevealed = [l for l in secret_word if l not in correct_letters]
                if unrevealed:
                    hint_letter = random.choice(unrevealed)
                    print(f"提示: 字母 '{hint_letter}' 在单词中")
                    correct_letters.add(hint_letter)
                else:
                    print("提示: 所有字母已被猜出!")
            else:
                print("提示次数已用完!")
            continue

        # 验证输入
        if len(guess) != 1 or not guess.isalpha():
            print("请输入单个字母!")
            continue

        # 检查是否已尝试过
        if guess in guessed_letters:
            print("你已尝试过这个字母!")
            continue

        guessed_letters.add(guess)

        # 检查猜测结果
        if guess in secret_word:
            correct_letters.add(guess)
            print(f"正确! 字母 '{guess}' 在单词中")

            # 检查是否获胜
            if set(secret_word) <= correct_letters:
                print(f"\n恭喜! 你猜对了单词: {secret_word}")
                print(f"剩余尝试次数: {guesses_left}")
                return
        else:
            guesses_left -= 1
            print(f"错误! 字母 '{guess}' 不在单词中")

    # 游戏失败
    print(f"\n游戏结束! 正确单词是: {secret_word}")
    print(f"你猜中的字母: {' '.join(correct_letters)}")


# 启动游戏
if __name__ == "__main__":
    word_guessing_game()

3、猜数字

打包代码(记得换成自己的地址)

Pyinstaller  -F W:\学徒\工程\2\游戏\猜数字.py
直接打包
Pyinstaller -i C:\Users\31253\Desktop\mmm.ico -F W:\学徒\工程\2\游戏\猜数字.py
添加封面图片

代码

import time
import random
a=random.randint(1,9999)
while True:
    try:
        time.sleep(0.5)
        b=int(input("请输入一个在四位以内的数字:"))
        while (b>10000 or b<0):
            time.sleep(0.5)
            print("输入数字不对")
            continue
    except :
        time.sleep(0.5)
        print("输入数字不符合")
        break
    if (b<=10000 and b>=0)and (a==b):
        time.sleep(0.5)
        print("你猜对了!")
        c=input("是否继续玩Y/N:")
        if c=='Y':
            time.sleep(0.5)
            print("再来一局")
            continue
        elif c=='N':
            time.sleep(0.5)
            print("游戏结束")
            break
        else:
            time.sleep(0.5)
            print("不认真回答,游戏结束")
            break
    elif (b<=10000 and b>=0)and a>=b:
        time.sleep(0.5)
        print("往大的猜")
        continue
    elif (b<=10000 and b>=0)and a<=b:
        time.sleep(0.5)
        print("往小的猜")
time.sleep(0.5)

三、找到自己打包的可执行文件

打包完成后会显示如下内容(红色框显示的就是打包的位置)

打开后就是这样的文件

现在你就会自己做小游戏了,快去和你的小伙伴分享吧


网站公告

今日签到

点亮在社区的每一天
去签到