猫史档案馆


code猫的

code猫的

Lv.1

获赞:103收藏:7浏览:474作品收藏:7
回复帖子评论
上一页3 页 / 共 6下一页

来找个协作 中回复

我可以

2024-08-12T12:27:34 点赞:0

python大佬招徒弟!(不信就点进来) 中回复

正在运行程序... Traceback (most recent call last): File "main.py", line 3 , in <module> import pygame   ModuleNotFoundError: No module named 'pygame'   代码好像有点小问题,再检查一下哦~

2024-08-12T12:39:46 点赞:0

红小豆工作室[重启无门槛]急招人,无门槛! 根据作品情况选副室长 中回复

我能吗

2024-08-13T11:18:26 点赞:1

在线求大佬! 中回复

可以

2024-08-13T11:48:14 点赞:0

三个聊天两个倒,剩我一个不喵鸟!趣聊新番! 中回复

imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E5%9C%A8%E5%90%97.gif"alt="emotion_编程猫_在吗"

2024-08-13T11:56:24 点赞:0

(求助帖)请问为什么错了啊 中回复

用写的怎么复杂吗??

2024-08-14T09:33:21 点赞:0

(求助帖)请问为什么错了啊 中回复

用输出小数有效位数的头文件不就行了

2024-08-14T09:34:13 点赞:0

豆递主全代码公开。 中回复

有时候用递归不用写那么长

2024-08-14T09:38:20 点赞:0

加入协作把 中回复

连接失效了

2024-08-14T09:39:22 点赞:0

为什么DEV-C++老是出问题啊(csp-j过了的扣1,我过了awa) 中回复

另外老版本的c++是不支持auto写法的

2024-08-14T09:40:51 点赞:0

求合作!!!! 中回复

11

2024-08-14T09:41:30 点赞:0

飞行模拟,协作 中回复

链接已失效

2024-08-14T09:42:25 点赞:0

求协作!!!求师父带路!!! 中回复

我可以

2024-08-17T10:24:43 点赞:0

求大佬协作 中回复

我可以

2024-08-17T10:47:07 点赞:0

协作!!! 中回复

不能打开

2024-08-17T10:47:41 点赞:0

协作MC塔防 中回复

可以

2024-08-17T10:48:01 点赞:0

编程猫报(1) 中回复

可以我帮忙吗?

2024-08-17T10:49:32 点赞:0

coco萌新求带 中回复

可以

2024-08-19T11:15:52 点赞:0

我需要技术喵给我一个解释(我真的非常生气) 中回复

用scarch转过来的函数代码也会这样

2024-08-19T11:26:00 点赞:0

折线统计图怎么做啊 中回复

不用一步执行进行代码就可以了

2024-08-19T11:27:16 点赞:0

TA没有名字 中回复

可以

2024-08-19T11:53:51 点赞:0

TA没有名字 中回复

用下划线

2024-08-19T11:54:06 点赞:0

python非线性窗口 中回复

以下是对您提供的 Tkinter 窗口动画代码的改进版本。主要改进包括:使用 self.after() 方法来控制动画的步骤而不是循环,确保代码更清晰可读,同时也解决了可能导致的性能问题。

import tkinter as tk

class Win(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("窗口")
        self.geometry("1280x720")
        self.update_idletasks()
        
        self.max_width = 1280
        self.max_height = 720
        self.init_x = 840
        self.init_y = 525
        
        self.win_size = 0
        self.animation_steps = 30  # 动画的步骤数
        self.step_delay = 1  # 每一步的延迟时间(毫秒)
        
        # 开始动画
        self.animate()

    def animate(self):
        if (100 - self.win_size) > 0.1:
            # 更新窗口大小
            self.win_size += (100 - self.win_size) / self.animation_steps
            width = int(self.max_width * (self.win_size / 100))
            height = int(self.max_height * (self.win_size / 100))
            win_x = self.init_x - width // 2
            win_y = self.init_y - height // 2
            
            self.geometry(f"{width}x{height}+{win_x}+{win_y}")
            self.after(self.step_delay, self.animate)  # 调用下一帧动画
        else:
            # 动画完成,设置最终大小
            self.geometry(f"{self.max_width}x{self.max_height}+{self.init_x - self.max_width // 2}+{self.init_y - self.max_height // 2}")

if __name__ == "__main__":
    app = Win()
    app.mainloop()
改进内容:
  1. 动画逻辑:将动画逻辑移入 animate 方法中,并使用 self.after() 来进行定时调用,而不是使用 while 循环,这样可以避免阻塞主线程,保持界面响应。
  2. 参数化:添加了一些参数如 animation_steps 和 step_delay,方便您在需要时调整动画的流畅度和速度。
  3. 代码可读性:通过方法分离和更清晰的命名,使代码更易于理解和维护。

 

2024-08-24T18:52:21 点赞:0

我的世界框架 中回复

有几个地方可以进行改进和修复。主要的问题是textture的拼写错误,应该是texture。此外,为了使代码更清晰和易于维护,可以进行一些小的组织和格式调整。以下是改进后的代码:

from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
import random

class Block(Button):
    def __init__(self, position):
        super().__init__(
            parent=scene,
            position=position,
            model='cube',
            origin_y=0.5,  # 修正拼写错误
            texture='white_cube',  # 修正拼写错误
            color=color.color(0, 0, random.uniform(0.9, 1)),
            highlight_color=color.green
        )

    def input(self, key):
        if self.hovered:
            if key == 'left mouse down':
                # 创建一个新的方块在当前方块的前面
                Block(position=self.position + mouse.normal)
            elif key == 'right mouse down':
                # 销毁当前方块
                destroy(self)

app = Ursina()

# 创建一个20x20的方块网格
for z in range(0, 20):
    for x in range(0, 20):
        Block(position=(x, 0, z))

# 创建第一人称控制器
player = FirstPersonController()

# 运行应用程序
app.run()
改进之处:
  1. 拼写修正:将textture更正为texture
  2. 代码格式化:整理了代码格式,使其更加整洁。
  3. 注释:添加了一些注释,帮助理解代码的各个部分。
  4. 逻辑清晰:在创建新的方块时,注释中说明其位置是相对于当前方块的前面。

这个改进后的代码应该可以在 Ursina 引擎中正常运行,同时更易于理解和维护。

2024-08-24T18:54:21 点赞:1

【Python作品分享】4维立方体【作品秀】 中回复

import turtle

def drawLine(p1, p2, size=3, color="black"):
    turtle.penup()
    turtle.goto(p1)
    turtle.pensize(size)
    turtle.pencolor(color)
    turtle.pendown()
    turtle.goto(p2)

def main():
    # 定义超立方体的两个部分
    upper_points = [
        [120.71, 50], [50, 120.71], [-50, 120.71], [-120.71, 50],
        [-50, -20.71], [50, -20.71], [20.71, 50], [-20.71, 50]
    ]
    
    lower_points = [
        [120.71, -50], [50, 20.71], [-50, 20.71], [-120.71, -50],
        [-50, -120.71], [50, -120.71], [20.71, -50], [-20.71, -50]
    ]

    # 绘制点
    turtle.pencolor("red")
    turtle.penup()
    for point in upper_points + lower_points:
        turtle.goto(point)
        turtle.dot(10, "red")

    # 绘制六边形直线
    for i in range(6):
        drawLine(upper_points[i], upper_points[i + 1])
        drawLine(lower_points[i], lower_points[i + 1])
    drawLine(upper_points[6], upper_points[0])
    drawLine(lower_points[6], lower_points[0])

    # 绘制竖直线
    for p1, p2 in zip(upper_points, lower_points):
        drawLine(p1, p2)

    # 绘制斜线
    for i in [6, 7]:
        drawLine(upper_points[i], upper_points[0])
        drawLine(upper_points[i], upper_points[2])
        drawLine(upper_points[i], upper_points[4])
        drawLine(lower_points[i], lower_points[0])
        drawLine(lower_points[i], lower_points[2])
        drawLine(lower_points[i], lower_points[4])
        
        drawLine(upper_points[i], upper_points[1])
        drawLine(upper_points[i], upper_points[3])
        drawLine(upper_points[i], upper_points[5])
        drawLine(lower_points[i], lower_points[1])
        drawLine(lower_points[i], lower_points[3])
        drawLine(lower_points[i], lower_points[5])

    turtle.done()

if __name__ == '__main__':
    main()

2024-08-24T18:56:17 点赞:1

【Python作品分享】Minecraft模拟器数据自调【作品秀】 中回复

这是你的Ursina游戏代码的修订版本。我在保持核心功能不变的同时,对可读性、错误处理和结构进行了改进。

from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
from perlin_noise import PerlinNoise
import random

# Function to get valid input from the user
def get_valid_input(prompt, valid_range):
    while True:
        try:
            value = int(input(prompt))
            if value in valid_range:
                return value
            else:
                print(f"输入的值必须在 {valid_range.start} 和 {valid_range.stop - 1} 之间")
        except ValueError:
            print("无效的输入,请输入一个数字。")

# Get user inputs
seed = get_valid_input("请输入4位地图种子(1000-9999): ", range(1000, 10000))
octaves = get_valid_input("请输入地形质量(1-5): ", range(1, 6))
map_size = get_valid_input("请输入地图大小(6-50): ", range(6, 51))
floor_kind = get_valid_input("请输入地形(喵地1雪原2): ", [1, 2])

if floor_kind == 1:
    time_of_day = get_valid_input("请输入时间(白天1夜晚2): ", [1, 2])
else:
    time_of_day = get_valid_input("请输入时间(白天1夜晚2): ", [1, 2])
    blizzard_size = get_valid_input("请输入暴风雪大小(小1中2大3超大4黑风暴5): ", range(1, 6))

floor_quality = get_valid_input("请输入地图等级(1喵2喵土3喵土石4喵土石砖): ", range(1, 5))

app = Ursina()

# Load textures and sounds
grass_texture = load_texture('assets/grass_block.png')
stone_texture = load_texture('assets/stone_block.png')
brick_texture = load_texture('assets/brick_block.png')
dirt_texture = load_texture('assets/dirt_block.png')
sky_texture = load_texture('assets/skybox.png')
arm_texture = load_texture('assets/arm_texture.png')
snow_texture = load_texture('assets/snow_block.png')
punch_sound = Audio('assets/punch_sound.wav', loop=False, autoplay=False)

block_pick = 1
window.exit_button.visible = False

# Set fog based on the chosen floor kind
fog_density_list = [0, 0.04, 0.2, 0.4, 0.6, 0.85]
if floor_kind == 2:
    scene.fog_color = color.white66
    scene.fog_density = fog_density_list[blizzard_size]

# Set up lighting
sun = DirectionalLight(color=color.gray)
sun.look_at(Vec3(1, -1, -1))
if time_of_day == 1:
    AmbientLight(color=color.rgba(100, 100, 100, 0.5))

def input(key):
    if key == 'q':
        quit()

def update():
    global block_pick
    if held_keys['1']: block_pick = 1
    if held_keys['2']: block_pick = 2
    if held_keys['3']: block_pick = 3
    if held_keys['4']: block_pick = 4

    hand.active() if held_keys['left mouse'] or held_keys['right mouse'] else hand.passive()

class Block(Button):
    def __init__(self, position=(0, 0, 0), texture=grass_texture):
        super().__init__(
            parent=scene,
            position=position,
            model='assets/block',
            origin_y=0.5,
            texture=texture,
            color=color.color(0, 0, random.uniform(0.9, 1)),
            scale=0.5
        )

    def input(self, key):
        if self.hovered:
            if key == 'left mouse down':
                punch_sound.play()
                for i in range(1 + (block_pick - 1) * 2):  # Adjust quantity based on block type
                    Block(position=self.position + mouse.normal, texture=self.get_texture())

            if key == 'right mouse down':
                punch_sound.play()
                destroy(self)

    def get_texture(self):
        if block_pick == 1: return grass_texture
        if block_pick == 2: return stone_texture
        if block_pick == 3: return brick_texture
        if block_pick == 4: return dirt_texture

class Sky(Entity):
    def __init__(self):
        super().__init__(
            parent=scene,
            model='sphere',
            texture=sky_texture,
            scale=random.randrange(100, 300),
            double_sided=True
        )

class Hand(Entity):
    def __init__(self):
        super().__init__(
            parent=camera.ui,
            model='assets/arm',
            texture=arm_texture,
            scale=0.2,
            rotation=Vec3(150, -map_size, 0),
            position=Vec2(0.7, -0.58)
        )

    def active(self):
        self.position = Vec2(0.5, -0.53)

    def passive(self):
        self.position = Vec2(0.7, -0.58)

# Generate terrain using Perlin noise
noise = PerlinNoise(octaves=octaves, seed=seed)
for z in range(map_size):
    for x in range(map_size):
        y = floor(noise([x / 24, z / 24]) * 8)
        texture = snow_texture if floor_kind == 2 else grass_texture
        Block(position=(x, y, z), texture=texture)

# Generate additional layers based on floor quality
if floor_quality >= 2:
    for z in range(map_size):
        for x in range(map_size):
            for y in range(2):
                Block(position=(x, y - 2, z), texture=dirt_texture)

if floor_quality >= 3:
    for z in range(map_size):
        for x in range(map_size):
            for y in range(3):
                Block(position=(x, y - 6, z), texture=stone_texture)

if floor_quality == 4:
    for z in range(map_size):
        for x in range(map_size):
            for y in range(1):
                Block(position=(x, y - 7, z), texture=brick_texture)

# Set up the player
player = FirstPersonController(x=map_size / 2 - 1, y=map_size + 50, z=map_size / 2 - 1)
if time_of_day == 1:
    sky = Sky()
hand = Hand()

# Instructions for the player
print('你已经完成了游戏初始设定,可以开始你的创造了!')
print('WASD对应前后左右,space跳跃,左键放置,右键破坏')
print('1234可以切换手持物品,分别对应喵石砖土')

app.run()

2024-08-24T19:00:16 点赞:0

为什么python下载不了auto-py-to-exe 中回复

使用pyinstaller等工具将.py文件打包成.exe文件时,需要确保所有依赖的库都已正确安装。特别是对于Windows系统,pyinstaller依赖于pywin32库,因此需要先安装与Python版本一致的pywin32库。

确保从Python官网下载并正确安装了适用于Windows的最新版Python安装包,并在安装过程中勾选“Add Python.exe to Path”选项,这样可以避免后续操作中的路径问题。如果未勾选该选项,需要手动将python.exe 所在路径添加到系统环境变量中。

在某些情况下,如果安装路径需要更高权限,可能需要以管喵身份运行安装程序或修改环境变量。例如,在Linux系统上,可能需要使用sudo命令来安装。

如果发现使用pyinstaller或其他类似工具(如py2exe、cx_freeze)仍然无法解决问题,可以尝试使用其他工具进行打包。例如,cx_freeze也是一个常用的工具,可以在命令窗口中输入特定命令来测试其安装是否成功,并将其用于将脚本编译为exe文件。

总结来说,解决Python无法下载auto-py-to-exe的问题,主要需要检查和调整环境变量设置、确保所有依赖库已正确安装、确认Python安装过程中的相关选项是否正确以及考虑使用其他打包工具。通过这些步骤,应该能够有效解决大部分问题。

2024-08-24T19:01:52 点赞:0

pygame自动生成人物并实现移动效果的源代码 中回复

在你提供的代码中,有几个可以改进的地方,以提高代码的可读性、可维护性和性能。以下是改进后的代码:

import pygame as pg
import sys

def move_picture(player_picture_path, bj_picture_path, window_length, window_width, window_name, player_x, player_y, player_speed_x, player_speed_y):
    pg.init()

    # 创建窗口
    window = pg.display.set_mode((window_length, window_width))
    pg.display.set_caption(window_name)

    # 加载背景图和玩家图
    background_image = pg.image.load(bj_picture_path)
    player_image = pg.image.load(player_picture_path)

    class Player:
        def __init__(self, x, y):
            self.px = x
            self.py = y
            self.player_rect = player_image.get_rect(center=(self.px, self.py))
            self.speed_x = player_speed_x
            self.speed_y = player_speed_y

        def move(self):
            pressed_keys = pg.key.get_pressed()
            
            # 移动逻辑
            if pressed_keys[pg.K_UP]:
                self.py -= self.speed_y
            if pressed_keys[pg.K_DOWN]:
                self.py += self.speed_y
            if pressed_keys[pg.K_LEFT]:
                self.px -= self.speed_x
            if pressed_keys[pg.K_RIGHT]:
                self.px += self.speed_x
            
            # 更新玩家矩形位置
            self.player_rect.topleft = (self.px, self.py)

        def draw(self):
            window.blit(player_image, self.player_rect.topleft)

    player = Player(player_x, player_y)

    while True:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                pg.quit()
                sys.exit()

        # 绘制背景和玩家
        window.blit(background_image, (0, 0))
        player.move()
        player.draw()

        pg.display.update()

# 示例调用
player_picture_path = "/Users/weilaimihuan/Desktop/棒棒贝贝/作品/第四阶段/第四阶段作品/接金币/源代码/2.png"
bj_picture_path = "/Users/weilaimihuan/Desktop/棒棒贝贝/作品/第四阶段/第四阶段作品/接金币/源代码/background3.png"
move_picture(player_picture_path, bj_picture_path, 700, 700, "GAME", 300, 300, 5, 5)
改进点:
  1. 代码组织:将窗口和图像的加载移到了函数的开头,便于快速了解程序入口。
  2. 玩家移动逻辑:调整了move方法中Y轴的方向,确保它与逻辑相符(Y轴向下增加)。
  3. 速度更新:在Player类中存储玩家的速度,更加清晰。
  4. 矩形更新:通过self.player_rect.topleft来更新玩家的位置,这样可以更好地利用Pygame的矩形特性。
  5. 可读性:变量名称更具描述性(如windowbackground_image),使代码更易懂。
运行说明:

确保你已经安装了Pygame库,并将路径指向正确的图片文件。运行此代码后,会弹出一个窗口,你可以使用箭头键来控制玩家图像的移动。

2024-08-24T19:03:40 点赞:0

【Python作品分享】⭐命定之书⭐【作品秀】 中回复

from tkinter import *
import random

# 图书推荐列表
book_list = [
    "你一开口,\n就让人欲罢不能,\n每个故事都是一个咒语,\n让听众失了魂。\n你是一本《罗生门》",
    "你信奉丛林法则,\n世界就是丛林,\n你,就是法则。\n你是一本《门口的野蛮人》",
    "你从不后悔自己,\n踏上一条没人走过的路,\n毕竟世上最稀奇的花,\n只开在无人的小径。\n你是一本《我们都是孤独的行路人》",
    "你是理想主义者,\n别人眼里的浮云,\n是你脚下的筋斗云。\n你是一本《悟空传》",
    "还好有你,\n默默守护着美好,\n让黑暗的世界透出一点光。\n你是一本《小王子》",
    "天下大若星盘,\n人人皆如棋子。\n你读透古今,\n就是想摆脱宿命,\n去做那执棋的人。\n你是一本《中国喵》",
    "大多数人都成为了\n他们不得不成为的人,\n而你成为了\n自己真正想成为的人。\n你是一本《老人与海》",
    "心若没有栖息的地方,\n到哪里都是在流浪。\n你拥有一个梦想,\n也拥有一个理由\n去坚强。\n你是一本《月亮与六便士》"
]

def jntm():
    name = e.get().喵()
    if name == '':
        to.set('⭐ 请输入姓名⭐')
    else:
        # 随机选择一本书
        recommendation = random.choice(book_list)
        to.set(f'{name},你推荐的书是:\n\n{recommendation}')

# 主窗口设置
a = Tk()
a.title('命运之书')
a.geometry('600x400+350+150')
a.resizable(0, 0)

# 标签和输入框
l1 = Label(a, text='⭐请输入姓名', font=('黑体', 20))
l1.place(x=30, y=10)

e = Entry(a, font=('黑体', 20))
e.place(x=30, y=60)

# 按钮
b = Button(a, text='选择', font=('黑体', 20), command=jntm)
b.place(x=350, y=45)

# 显示推荐结果的标签
to = StringVar()
l2 = Label(a, textvariable=to, font=('黑体', 20), wraplength=500)  # 设置换行
l2.place(x=100, y=150)

# 运行主循环
a.mainloop()
改进点说明:
  1. 输入验证:在获取用户输入时,添加了 喵() 方法,以去掉首尾空格。
  2. 结果显示:推荐结果的显示格式进行了修改,包含用户姓名并进行了适当格式化,让推荐更具个性化。
  3. 换行处理:在显示推荐结果的标签中,添加了 wraplength 属性,以确保长文本可以在合适的宽度内换行,使得界面更加美观。
  4. 按钮文本:将按钮的文本改为“选择”,更贴近功能。

你可以运行改进后的代码,看看效果,欢迎根据需要进行更多个性化的修改!

2024-08-24T19:07:11 点赞:0

【Python作品分享】猜数 中回复

import random

def generate_random_number(start=1, end=10):
    """生成随机数字"""
    return random.randint(start, end)

def get_user_input():
    """获取用户输入并进行验证"""
    while True:
        try:
            user_input = int(input('请输入一个数字 (输入0退出游戏): '))
            return user_input
        except ValueError:
            print("输入无效,请输入一个数字。")

def main():
    random_num = generate_random_number()
    print("欢迎来到猜数字游戏!")
    
    while True:
        your_num = get_user_input()
        
        if your_num == 0:
            print('退出游戏!')
            break
        elif your_num < random_num:
            print('你的数字太小,请重新输入:')
        elif your_num > random_num:
            print('你的数字太大,请重新输入:')
        else:
            print('恭喜你,猜对了!')
            print('游戏结束。')
            break

if __name__ == "__main__":
    main()
改进点:
  1. 函数化:将生成随机数、获取用户输入和主程序逻辑分成不同的函数,使代码更模块化。
  2. 输入验证:对用户输入进行了异常处理,以防输入非数字字符导致程序崩溃。
  3. 用户提示:添加了欢迎提示,增强了用户体验。
  4. 代码结构:使用 if __name__ == "__main__": 语句来封装主逻辑,使代码更符合 Python 编程的最佳实践。

这个版本的代码结构清晰,便于扩展和维护。

2024-08-24T19:08:48 点赞:0