Python实现游戏名随机生成

在玩游戏的时候,我们经常会获取到一个随机的,但又(奇奇怪怪)的名字。那么,这种功能是怎么实现的呢?

1.了解原理

我们以一个MC的玩家名为例:

DeavHoog315

该名由"Deav","Hoog","315"三部分组成。

我们把这三部分分别命名为A,B,C。

系统会分别保存ABC的所有可能性,然后在注册账号的时候,随机分配。

有点拗口,我们逐条分析。

1.词库

为了生成,我们需要2个词库,分别代表A,B。

比如:

LIST A:
Deav,John,Keve,Zico

LIST B:
Mary,Hoog,Tire,Pime

有人就要问了:那C呢?

C是三位数,完全可以自动生成。

2.开始生成

接下去就要生成了。

程序会分别从A词库和B词库随机挑选一个词语,把它拼成AB字段。

如DeavHoog,JohnPime,ZicoMary。

C就简单了,直接生成随机数。

如922,456,247,164 。

再把AB字段和C拼在一起,就是完整的名字了。

2.代码实现

说了这么多,终于到了我们的代码环节了L(^_^)

为了随机生成,我们需要python自带的库random。

import random as rd
词库
lib_a = ["Deav","John","Keve","Zico"]

lib_b = ["Mary","Hoog","Tire","Pime"]
AB词段
a = rd.choice(lib_a)
b = rd.choice(lib_b)

ab = a+b

choice,就是在指定的列表里,随机选择一个元素。 

 C
c = rd.randint(101, 999)

 randint生成一个int类型的书,范围在a-b间(不包含b)。

拼接
fin = ab + str(c)
输出
print(fin)

怎么样,简单吧?

完整代码
import random as rd


lib_a = ["Deav","John","Keve","Zico"]
lib_b = ["Mary","Hoog","Tire","Pime"]

a = rd.choice(lib_a)
b = rd.choice(lib_b)
ab = a+b
c = rd.randint(101, 999)
fin = ab + str(c)
print(fin)
 运行结果:
JohnHoog822

3.优化改进:

现在,我们的代码存在着问题

Issue #1:

词库太小了,最多只能生成4*4=16个AB字段。

解决 #1:

这个可以自己去编写,或者如果你有相关经验,也可以通过API调用,来实现更多的AB字段。

这里,我给了大家一个示范:

lib_a = ["Deav","Cole","Ruco","Lisa","Mota","Hirm","Evan"]

lib_b = ["Sepi","Nape","Hoog","Fito","Slom","Kite","Mary"]
Issue #2:

只能运行一次,无法批量生成。

解决#2:

这个for循环就可以解决。

优化后的代码:

这里,程序更加的人性化了。我加上了注释,大家复制吧。

import random as rd  # 导入随机库
import time  # 时间库


lib_a = ["Deav","Cole","Ruco","Lisa","Mota","Hirm","Evan"]  # A词库
lib_b = ["Sepi","Nape","Hoog","Fito","Slom","Kite","Mary"]  # B词库

n = int(input("生成次数="))

for i in range(n):  # 主循环
    a = rd.choice(lib_a)  # 生成A
    b = rd.choice(lib_b)  # 生成B
    ab = a+b  # ab字段
    c = rd.randint(101, 999) #生成范围为101-999(包左不包右)的C
    fin = ab + str(c)
    print(f"生成名字:{fin}")
    time.sleep(1) #休息1秒,为的是减轻电脑负担,也是让用户有时间看

    

到这吧,bye。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值