一摞Python风格的纸牌 后端开发

import collections
from random import choice

# namedtuple 是一个可命名的元祖,它可以让你使用属性式的标签来访问元祖中的元素,而不是通过索引
Card = collections.namedtuple('Card', ['rank', 'suit'])

class FrenchDesk:
    ranks = [str(n) for n in range(2, 11)] + list('JQKA')
    suite = '黑桃 方块 梅花 红星'.split()

    def __init__(self):
        self._cards = [Card(rank, suit) for suit in self.suite
                       for rank in self.ranks]

    def __len__(self):
        return len(self._cards)

    def __getitem__(self, position):
        return self._cards[position]

# 手工设置一张牌
beer_card = Card('7', '方块')
print("手工设置一张牌:")
print(beer_card.rank, beer_card.suit)

deck = FrenchDesk()
print(f"总共有 {len(deck)} 张牌。")

print(deck[0])
print(deck[-1])

# 随机选一张牌
# 函数random.choice 可以从序列中随机获取一项的函数
print("随机获取的牌:")
print(choice(deck))
print(choice(deck))
print(choice(deck))

Fluent Python 1-1

标签: python

明算软件 发布于  2024-4-28 21:58 

打印输出所有事件 游戏开发

在pygame窗口中输出事件队列中的所有事件。

import random
import pygame
import sys

SIZE = WIDTH, HEIGHT = 640, 396
FPS = 60

pygame.init()
screen = pygame.display.set_mode(SIZE, 0, 32)
pygame.display.set_caption("Event")
clock = pygame.time.Clock()
font = pygame.font.SysFont(None, 25)
font_height = font.get_linesize()
event_list = []
line_num = SIZE[1]

running = True

while running:
    event = pygame.event.wait()
    event_list.append(str(event))
    event_text = event_list[-line_num:]

    if event.type == pygame.QUIT:
        sys.exit()
    screen.fill((54, 59, 64))

    y = SIZE[1] - font_height
    for text in reversed(event_list):
        rgb = tuple((random.randint(0,255) for i in range(3)))
        screen.blit(font.render(text, True, rgb), (0, y))
        y -= font_height

    pygame.display.update()

标签: python pygame

明算软件 发布于  2024-4-16 16:57 

pygame最小开发框架 游戏开发

使用pygame开发,有一个最小的开发框架,可以帮助我们开发pygame时能快速看到程序运行结果,提高开发效率。

pygame最小开发框架代码如下:

import sys

# 导入pygame及常量库
import pygame
from pygame.locals import *

# 游戏中的一些常量定义
SIZE = WIDTH, HEIGHT = 640, 396
FPS = 60
TITLE = "Hello_明算"

# 颜色常量定义
BG_COLOR = 25, 102, 173

# 初始化
pygame.init()
pygame.mixer.init()

# 创建游戏窗口
screen = pygame.display.set_mode(SIZE)
# 设置窗口标题
pygame.display.set_caption(TITLE)
# 创建时间管理对象
clock = pygame.time.Clock()
# 创建字体对象
font = pygame.font.SysFont(None, 60,)

running = True
# 程序运行主体循环
while running:
    # 清屏(窗口纯背景色画纸绘制)
    screen.fill(BG_COLOR) # 准备一个画布

    # 绘制
    for event in pygame.event.get(): # 事件索取
        if event.type == QUIT: # 判断点击窗口右上角 “×”
            pygame.quit()
            sys.exit()

    # 刷新
    pygame.display.update()
    # 设置帧数
    clock.tick(FPS)

# 循环结束后,退出游戏
pygame.quit()
标签: pygame

明算软件 发布于  2024-3-3 18:09 

stable diffusion WebUI手动安装 Ai绘画

优点:最纯正的Stable Diffusion WebUI程序,可以按需按需安装插件,一步步了解Stable Diffusion的部署和插件安装过程,对于每个部件和后续出现问题更容易找到根源和处理方法。

缺点:麻烦,要找到模型和插件一个个下载安装。

  1. 安装python
    建议安装3.10.6版本,这个是Stable Diffusion WebUI作者推荐安装版本,打开python.org/downloads/页面找到3.10.6版本下载,然后安装,安装没有什么难度,唯一需要注意的是安装时要勾选add python 3.10 to PATH。

  2. 安装git
    Git官网:https://git-scm.com/download ,找到64-bit Git windows Setup进行下载。安装一直下一步就可以。

  3. 安装Stable Diffusion WebUI
    接着安装Stable Diffusion WebUI,在硬盘空间充足,并且没有中文路径的文件夹导航栏,输入cmd,复制下面代码
    git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

回车,等待安装结束,就可以看到stable-diffusion-webui文件夹了,点击进入打开webui-user.bat,等待安装必要的启动项,然后就可以在浏览器打开127.0.0.1:7860进入Stable Diffusion WebUI界面了。


明算软件 发布于  2024-2-23 17:12 

Blender 十大操作快捷键 游戏开发

  • 挤出:E
    连续挤出:CTRL + 右键
  • 向内挤出:I
  • 倒角:CTRL + B
  • 循环切割:CTRL + R
  • 合并:M
  • 断开:V
  • 填充:F
    栅格填充:CTRL + F
    栅格填充必需是偶数面
  • 切刀:K
    按鼠标右键或者空格键退出
    桥接必须是同一个物体
  • 合并物体:CTRL + J
  • 分离:P
标签: blender

明算软件 发布于  2024-2-22 13:35 

第一个Pygame程序 游戏开发

Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相关知识就能很轻松地掌握它。


# 导入pygame模块。
import sys
import pygame

# pygame初始化。
pygame.init()

# 设置主屏幕
screen = pygame.display.set_mode((800, 600))

# 设置窗口标题名称。
pygame.display.set_caption('hamcheese')

# 导入字体。
font_name = pygame.font.Font("c:/Windows/Fonts/simhei.ttf", 50)

# 生成文本信息,参数一文本内容,参数二字体平滑,参数三字体颜色,参数四背景颜色。
text = font_name.render("火腿芝士", True, (255,0,0), (0,0,0))

# 获取显示对象的坐标区域。
textRect = text.get_rect()
# 设置居中。
textRect.center = (400, 300)

# 将文本信息绘制到主屏幕sreeen上。
screen.blit(text, textRect)

# 游戏主循环
while True:
    # 获取鼠标键盘事件
    for event in pygame.event.get():
        # 点×退出游戏
        if event.type == pygame.QUIT:
            pygame.QUIT
            sys.exit()
    # 更新屏幕内容,删除上一帧,绘制这一帧
    pygame.display.flip()
标签: pygame

明算软件 发布于  2024-2-22 13:33 

FastAPI请求体模型内的属性验证 后端开发

使用pydantic.Field


class UserModel(BaseModel):
    username: str = Field(..., min_length=3)
    description: Optional[str] = Field(None, max_lenght=128)
    gender: Gender

明算软件 发布于  2024-1-24 16:59 

FastAPI路径参数的验证 后端开发

路径参数都是必须项


@app.get('/users/{user_id}')
async def get_user(user_id: int = Path(...,
                                       title="The user id"
                                       ge=1,
                                       le=10000)):
    return {'user': f'This isi the user for {user_id}'}

明算软件 发布于  2024-1-22 14:46 

FastAPI函数的参数识别规则 后端开发

  1. 如果在路径参数中定义了,那么匹配为路径参数;
  2. 如果参数的类型为int,str之类的基本类型,则为查询参数;
  3. 如果是pydantic的模型类型,则为请求体。

明算软件 发布于  2024-1-21 18:14