python项目实战-小游戏1

项目规则:

1、玩家和敌人分别从现有的角色中选择3个角色

2、随机生成目前的血量,和攻击量

3、游戏规则:当玩家向敌人发起攻击,敌人当前的血量=之前的血量-玩家的血量,同理

4、3局两胜

5、自定义玩家出场的顺序和敌人出场的顺序

import time,random

# 需要的数据和变量放在开头
player_list =  [‘【狂血战士】‘,‘【森林箭手】‘,‘【光明骑士】‘,‘【独行剑客】‘,‘【格斗大师】‘,‘【枪弹专家】‘]
enemy_list = [‘【暗黑战士】‘,‘【黑暗弩手】‘,‘【暗夜骑士】‘,‘【嗜血刀客】‘,‘【首席刺客】‘,‘【陷阱之王】‘]
players = random.sample(player_list,3)  #从player_list中随机选取3个
enemies = random.sample(enemy_list,3)
player_info = {}
enemy_info = {}

# 随机生成角色的属性
def born_role():
    life = random.randint(100,180) #在100到180之间生成随机数,整数
    attack = random.randint(30,50)
    return life,attack

# 生成和展示角色信息
def show_role():
    for i in range(3):
        player_info[players[i]] = born_role()
        enemy_info[enemies[i]] = born_role()

    # 展示我方的3个角色
    print(‘----------------- 角色信息 -----------------‘)
    print(‘你的人物:‘)
    for i in range(3):
        print(‘%s  血量:%d  攻击:%d‘
        %(players[i],player_info[players[i]][0],player_info[players[i]][1]))
    print(‘--------------------------------------------‘)
    print(‘电脑敌人:‘)

    # 展示敌方的3个角色
    for i in range(3):
        print(‘%s  血量:%d  攻击:%d‘
        %(enemies[i],enemy_info[enemies[i]][0],enemy_info[enemies[i]][1]))
    print(‘--------------------------------------------‘)
    input(‘请按回车键继续。\n‘)  # 为了让玩家更有控制感,可以插入类似的代码来切分游戏进程。

# 角色排序,选择出场顺序。
def order_role():
    global players
    order_dict = {}
    for i in range(3):
        order = int(input(‘你想将 %s 放在第几个上场?(输入数字1~3)‘% players[i]))
        order_dict[order] = players[i]  

    players = []
    for i in range(1,4):
        players.append(order_dict[i]) 

    print(‘\n我方角色的出场顺序是:%s、%s、%s‘ %(players[0],players[1],players[2]))
    print(‘敌方角色的出场顺序是:%s、%s、%s‘ %(enemies[0],enemies[1],enemies[2]))

# 角色PK
def pk_role():
    round = 1
    score = 0
    for i in range(3):  # 一共要打三局
        player_name = players[i]
        enemy_name = enemies[i]
        player_life = player_info[players[i]][0]
        player_attack = player_info[players[i]][1]
        enemy_life = enemy_info[enemies[i]][0]
        enemy_attack = enemy_info[enemies[i]][1]

        # 每一局开战前展示战斗信息
        print(‘\n----------------- 【第%d局】 -----------------‘ % round)
        print(‘玩家角色:%s vs 敌方角色:%s ‘ %(player_name,enemy_name))  #格式化输出
        print(‘%s 血量:%d  攻击:%d‘ %(player_name,player_life,player_attack))
        print(‘%s 血量:%d  攻击:%d‘ %(enemy_name,enemy_life,enemy_attack))
        print(‘--------------------------------------------‘)
        input(‘请按回车键继续。\n‘)

        # 开始判断血量是否都大于零,然后互扣血量。
        while player_life > 0 and enemy_life > 0:
            enemy_life = enemy_life - player_attack
            player_life = player_life - enemy_attack
            print(‘%s发起了攻击,%s剩余血量%d‘ % (player_name,enemy_name,enemy_life))
            print(‘%s发起了攻击,%s剩余血量%d‘ % (enemy_name,player_name,player_life))
            print(‘--------------------------------------------‘)
            time.sleep(1)
        else:  # 每局的战果展示,以及分数score和局数的变化。
            # 调用show_result()函数,打印返回元组中的result。
            print(show_result(player_life,enemy_life)[1])
            # 调用show_result()函数,完成计分变动。
            score += int(show_result(player_life,enemy_life)[0])
            round += 1
    input(‘\n点击回车,查看比赛的最终结果\n‘)

    if score > 0:
        print(‘【最终结果:你赢了!】\n‘)
    elif score < 0:
        print(‘【最终结果:你输了!】\n‘)
    else:
        print(‘【最终结果:平局!】\n‘)

# 返回单局战果和计分法所加分数。
def show_result(player_life,enemy_life):  # 注意:该函数要设定参数,才能判断单局战果。
    if player_life > 0 and enemy_life <= 0:
        result = ‘\n敌人死翘翘了,你赢了!‘
        return 1,result  # 返回元组(1,‘\n敌人死翘翘了,你赢了!‘),类似角色属性的传递。
    elif player_life <= 0 and enemy_life > 0:
        result = ‘\n悲催,敌人把你干掉了!‘
        return -1,result
    else :
        result = ‘\n哎呀,你和敌人同归于尽了!‘
        return 0,result

# (主函数)展开战斗流程
def main():
    show_role()
    order_role()
    pk_role()

# 启动程序(即调用主函数)
main()

原文地址:https://www.cnblogs.com/mml-blog/p/10584025.html

时间: 2024-07-30 19:50:13

python项目实战-小游戏1的相关文章

Python 基础实战 -- 小游戏之猜数字

1 import random 2 3 secret = random.randint(1,10) #随机一个数字作为答案 4 value = secret + random.randint(100,1000) #随便给一个值,防止重复 5 count = 3 #剩余游戏次数 6 while not secret == value: 7 count -= 1 8 try: 9 temp = input("请输入一个数值:") 10 if not temp.isdigit() or te

项目实战—小饭桌

一 项目环境 项目环境说明 本项目是一个模仿小饭桌官网的项目实战.具有前台和CMS后台管理系统.具有以下模块:新闻.在线课程.付费资讯.搜索等模块.其中涉及到的技术要点有:Django.ajax,Restful API,arttemplate.js.在线视频播放,支付,haystack搜索,UEditor富文本编辑器,第三方分享等. 前端方向 nvm:用来管理node.js的工具. node.js:自带有npm包管理工具. npm:类似于Python中的pip.可以非常方便的管理一些前端开发的包

Jenkins部署Python项目实战

一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Jenkins强大的插件功能,轻松实现CI/CD,但如果部署多项目到同一台服务器涉及环境一致性问题,对此可以利用容器技术Docker解决,也可以利用Python虚拟环境例如virutalenv或conda等优秀等工具解决,在此由于后期根据requirements来安装依赖包比较慢,且后期需要将Pytho

用Python写一个小游戏

刚学Python时间不长,但也知道了一点,看别人的参考写了一个猜数字小游戏,也算是禹学于乐吧. #!/usr/bin/env   python #coding=utf-8 import random secret = random.randint(1,100) guess,tries = 0,0 print u"已经给出了一个1-99的数字" while guess != secret and tries < 5: print u"请给出你猜的数字:" pri

结对项目之小游戏编程(斗地主)

一.题目简介    本次的项目是编写一个斗地主的小游戏,实现语言:java:主要完成了GUI设计.计时线程.算法.本次项目的主要目的是对算法的学习.算法分析在心得里面. 技术难点:1.图片的移动    2.计时线程的设定   3.对牌的分割,必须考虑到优先拆分方案,将权值低的拆分方案舍去. 4.在删除的时候遇到问题了,删除不了. 二.结对分工及过程 本次结对项目的成员有两个,张国伟:负责对GUI界面的设计,完成功能:洗牌功能,发牌功能,打牌功能的图片的位移处理,基本打牌的桌面等等. 我主要负责对

Python项目实战:福布斯系列之数据采集

1 数据采集概述 开始一个数据分析项目,首先需要做的就是get到原始数据,获得原始数据的方法有多种途径.比如: 获取数据集(dataset)文件 使用爬虫采集数据 直接获得excel.csv及其他数据文件 其他途径… 本次福布斯系列数据分析项目实战,数据采集方面,主要数据来源于使用爬虫进行数据采集,同时也辅助其他数据进行对比. 本文主要是介绍使用爬虫进行数据采集的思路和步骤. 本次采集的福布斯全球上市企业2000强排行榜数据,涉及年份从2007年到2017年,跨越10多年. 本次采集的目标网站,

Python爬虫实战小项目

爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据 import requests from fake_useragent import UserAgent ua = UserAgent(use_cache_server=False,verify_ssl=False).random headers = { 'User-Agent':ua } url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkz

基于python的俄罗斯方块小游戏

课 程 名:   python课程设计 课程设计项目名称:   基于python的俄罗斯方块 团队成员:     叶焱镔.柯博群.钱昱铭 一.项目简介 1.1 项目博客地址 1.2 项目完成的功能与特色 俄罗斯方块的游戏实现,实现了随机方块的生成.下落.旋转,游戏的进行.消除.结束,游戏的重新开始.退出.暂停,可显示最高记录.历史记录.记录的排行,可继续上回的游戏 1.3 项目采用的技术栈    python 1.4 项目借鉴源代码的地址 https://blog.csdn.net/lanseg

Python猜数小游戏

[游戏规则]生成一个指定范围的随机数(如:1-100),然后玩家输入数值猜答案,屏幕会根据玩家输入的数字给出大小提示,一直到玩家猜出准确答案则游戏胜利并结束. import  random answer=random.randint(1,100) n=int(input("Please input num: ")) while n!=answer :       if n>answer:           n = int(input("Num is Big! Plea