Python 原神抽卡模拟器(附完整源码)——blog12

目录

发疯文学

跳转正文

导包,初始化:

眨眼补帧

伪随机

计算平均出金次数

Pygame主程序

觉得有帮助的小伙伴还请点个关注


发疯文学

你说的对,但是《原神》是由米哈游自主研发的一款全新开放世界冒险游戏。游戏发生在一个被称作「提瓦特」幻想世界,在这里,被神选中的人将被授予「神之眼」,导引元素之力。你将扮演一位名为「旅行者」的神秘角色,在自由的旅行中邂逅性格各异、能力独特的同伴们,和他们一起击败强敌,找回失散的亲人——同时,逐步发掘「原神」的真相。

你说得对,但这是一个原神的时代,我想,我是不是真的太贪心了?于是今天我调整了心态开始玩原神。
锄大地时我爆了蓝面具。众所周知蓝面具=3绿面具=45尘辉=3抽的副产物。即使是副产物也足显米哈游的慷慨,于是我原地跪下跪了五分钟。以此类推绿面具就是一抽的副产物。也有相当的价值,由于锄地爆率还不错,我把桌子腿全锯了方便我一直跪在地上玩游戏也能够到电脑。

走到半路发现了以前漏了的箱,开箱得了2原石,原石是付费代币,付费代币等于人民币,这是米哈游在慷慨的给我发钱,我一时难忍激动,当场给米哈游了磕个头

开了esc菜单发现昨天邮件没领,点开就是100原石,100原石!我要开50个箱子!就是需要我磕50个头!我觉得单纯磕头已经不能表达我的感激了,于是我沐浴更衣给米哈游上了香郑重的磕了三个头。

woc!随便一抽就是双金!

原之巅,傲世间,有我原神便有天;

罪州前,双膝下,原神救我传天下;

语之巅,劝世间,看我原神劝翻天;

坟之巅,葬世间,待我原神挖穿天;

3A尽头谁为峰,一身荣耀是原神;

纵使我需背负骂名,一只手拖住tx水军。我原神,一样不无敌于世间!

——————————————————

醒醒,这不是在玩游戏!这是抽卡模拟器!

跳转正文

导包,初始化:

import random
import pygame
import sys
import time

pygame.init()

要在python中实现动画效果,除了pyplot的animation,最方便的莫过于pygame了。。。

核心代码也就是下面这两行:

眨眼补帧

time.sleep(0.1)

pygame.display.update()

然后写入原神抽卡项目名称,使用random.randint(0,1000)实现一个伪随机,原神五星抽卡期望暂定为网上公认的73,当抽卡数量到达一定数时,概率开始递增,使期望维持在73附近。

不妨想象一个坐标轴:

以及:

可以用条件逻辑大致实现。

伪随机

def random_main():
    results = []
    x = 6
    y = 57
    count = 0
    si = 1
    wu = 0
    wu_list = []
    c0 = ''
    delta = 0
    for t0 in range(1):

#c0 = input("回车以继续, q键退出抽卡:")
        if c0 == '':
            z = input("请输入抽取次数:")

            for t1 in range(int(z)):
                c = random.randint(0, 1000)
                if wu <= 73:
                    if c >= 0 and c <= x:   #五星
                        c_ = random.choice([1, 2])
                        if delta != 0 or c_ == 2:
                            result = up[0]
                            delta = 0
                        else:
                            result = random.choice(kachi_wu)
                            delta += 1

                        print(f"{result}\t\t555")
                        wu_list.append(wu)
                        results.append(result)
                        wu_.append(result)
                        si += 1
                        wu = 0
                        count += 1

                    elif c > x and c <= y:

                        result = random.choice(kachi_si)
                        print(f"{result}\t\t444")
                        results.append(result)
                        si = 0
                        wu += 1
                        count += 1


                    elif c > y and c <= 1000:
                        if si == 10:
                            result = random.choice(kachi_si)
                            print(f"{result}\t\t444")
                            results.append(result)
                            si = 0
                            wu += 1
                            count += 1

                        else:
                            result = random.choice(kachi_san)
                            print(f"{result}\t\t333")
                            results.append(result)
                            si += 1
                            wu += 1
                            count += 1

                elif wu > 73:
                    x += 58
                    y += 58
                    if c >= 0 and c <= x:  # 五星
                        c_ = random.choice([1, 2])
                        if delta != 0 or c_ == 2:
                            result = up[0]
                            delta = 0
                        else:
                            result = random.choice(kachi_wu)
                            delta += 1
                        print(f"{result}\t\t555")
                        results.append(result)
                        si += 1
                        wu_list.append(wu)
                        wu_.append(result)
                        wu = 0
                        count += 1
                        x = 6
                        y = 57

                    elif c > x and c <= y:
                        if wu != 90:
                            result = random.choice(kachi_si)
                            print(f"{result}\t\t444")
                            results.append(result)
                            si = 0
                            wu += 1
                            count += 1

                        else:
                            result = random.choice(kachi_wu)
                            print(f"{result}\t\t555")
                            results.append(result)
                            si += 1
                            wu_list.append(wu)
                            wu = 0
                            count += 1
                            x = 6
                            y = 57

                    elif c > y and c <= 1000:
                        if wu == 90 and si != 10:
                            result = random.choice(kachi_wu)
                            print(f"{result}\t\t555")
                            results.append(result)
                            si += 1
                            wu_list.append(wu)
                            wu = 0
                            count += 1
                            x = 6
                            y = 57

                        elif wu != 90 and si == 10:
                            result = random.choice(kachi_si)
                            print(f"{result}\t\t444")
                            results.append(result)
                            si = 0
                            wu += 1
                            count += 1

                        elif wu == 90 and si == 10:
                            result = random.choice(kachi_wu)
                            print(f"{result}\t\t555")
                            results.append(result)
                            si += 0
                            wu_list.append(wu)
                            wu = 0
                            count += 1
                            x = 6
                            y = 57

                        else:
                            result = random.choice(kachi_san)
                            print(f"{result}\t\t333")
                            results.append(result)
                            si += 1

                            wu += 1
                            count += 1
    print(results)

        #elif c0 == 'q':
    print(wu_list)
    print(f"平均{average(wu_list)}发出金")
    print(wu_)

计算平均出金次数

#提取五星名称
wu_ = []
def average(list):
    wu_list = list
    sum = 0
    for t in range(len(wu_list)):
        sum += wu_list[t]
    return sum / len(wu_list)

Pygame主程序

screen_width = 768
screen_height = 432

img_ku = []
screen = pygame.display.set_mode((screen_width, screen_height))
events = pygame.event.get()
pygame.display.set_caption("原神抽卡器")
screen.fill((50, 50, 90))
font = pygame.font.Font('freesansbold.ttf', 28)



while True:
    pygame.display.flip()
    event = pygame.event.get()
    if event == pygame.QUIT:

        sys.exit()
    try:
        random_main()
    except:
        pass

    i = 1

    for x in range(34):        #分四种情形遍历四种不同列表   可以直接跟在后面用条件语句遍历输出
        if event == pygame.QUIT:
            sys.exit()

        file_name = f"{i}.jpg"
        pic = pygame.image.load(file_name)
        screen.blit(pic, (0, 0))
        i += 1
        time.sleep(0.1)

        pygame.display.update()
        #text = f"Please enter the time \nhow much you wanna try \nfrom your keyboard!"
        #score_render = font.render(text, True, (255, 0, 0))
        #screen.blit(score_render, (50, 50))
        #pygame.display.update()
        #t = input()
    lis = ['35.jpg', '36.jpg']
    file_ = random.choice(lis)
    pic_ = pygame.image.load(file_)
    screen.blit(pic_, (0, 0))

    pygame.display.update()
    time.sleep(1)

    pygame.display.update()

我们原神玩家是这样的

觉得有帮助的小伙伴还请点个关注

后续会持续分享 免费、高质量 的高校相关以及Python学习文章

  • 38
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值