【风变编程-python语法】第七关(小游戏大学问)-笔记

【风变编程-python语法】第七关(小游戏大学问)-笔记python基础语法–第一个项目实操完成一个项目的流程1.1 明确项目目标1.2 分析过程,拆解项目1.3 逐步执行,代码实现项目实战:编写一个小游戏2.1 版本1.02.2 版本2.02.3 版本3.0- [ 练习作业](题1) 在项目基础上,选择是否再来一盘,或退出游戏(题 2) format()函数完成...
摘要由CSDN通过智能技术生成

【风变编程-python语法】第七关(小游戏大学问)-笔记

python基础语法–第一个项目实操

完成一个项目的流程
1.1 明确项目目标
1.2 分析过程,拆解项目
1.3 逐步执行,代码实现
项目实战:编写一个小游戏
2.1 版本1.0
2.2 版本2.0
2.3 版本3.0
- [ 练习作业]
(题1) 在项目基础上,选择是否再来一盘,或退出游戏
(题 2) format()函数

完成一个项目的流程

  • 正式进入项目实操
  • 互联网公司中,一般是由产品经理提出明确的项目需求,程序员来实现。

小游戏:这个游戏中,会随机生成玩家和敌人的属性,同时互相攻击,直至一方血量小于零。这样的战斗会持续三局,采取三局两胜制,最后输出战斗结果,公布获胜方。

分析过程,拆解项目:

  • 版本1.0:规定双方角色属性,战斗时认为计算口血量,并打印出战斗过程;
  • 版本2.0:随机生产双方角色属性,自动计算口血量,优化显示战斗过程的代码;
  • 版本3.0:双方进行3局PK,每局判定胜负。三局两胜,判断最终结果。

版本1.0:自定属性,人工PK

  • 版本1.0主要在于理清楚战斗逻辑。

基础元素设定

  • 1.有玩家、敌人的属性
  • 2.要能相互攻击
  • 3.攻击减少血量
  • 4.有最终胜负
    三步实现
    1.规定并显示出玩家和敌人的属性
    2.双方同时互相攻击,血量根据对方的攻击力扣除
    3.若有一方血量小于等于0,游戏结束。
#代码
#1.定义玩家属性:
print('【玩家】血量:100 攻击:50')
print('【敌人】血量:100 攻击:30')
#2.手动计算攻击第一次,双方各自所剩的血量:
print('你发起了攻击,【敌人】剩余血量50') #人工计算敌人血量:100-50=50
print('【敌人】发起了攻击,【玩家】剩余血量70') #人工计算玩家血量:100-30=70
#3.手动计算攻击第一次,双方各自所剩的血量:
print('你发起了攻击,【敌人】剩余血量0') #人工计算敌人血量:50-50=0
print('【敌人】发起了攻击,【玩家】剩余血量40') #人工计算玩家血量:70-30=40

print('敌人死翘翘了,你赢了!!')#打印结果
#显示
【玩家】血量:100 攻击:50
【敌人】血量:100 攻击:30
你发起了攻击,【敌人】剩余血量50
【敌人】发起了攻击,【玩家】剩余血量70
你发起了攻击,【敌人】剩余血量0
【敌人】发起了攻击,【玩家】剩余血量40
敌人死翘翘了,你赢了!!
#代码显示处理
print('【玩家】\n血量:100\n 攻击:50')
print('------------------------------')
print('【敌人】\n血量:100\n攻击:30')
print('------------------------------')

print('你发起了攻击,【敌人】剩余血量50')
print('【敌人】发起了攻击,【玩家】剩余血量70')
print('------------------------------')
print('你发起了攻击,【敌人】剩余血量0')
print('【敌人】发起了攻击,【玩家】剩余血量40')
print('------------------------------')
print('敌人死翘翘了,你赢了!!')
#显示
【玩家】
血量:100
攻击:50
------------------------------
【敌人】
血量:100
攻击:30
------------------------------
你发起了攻击,【敌人】剩余血量50
【敌人】发起了攻击,【玩家】剩余血量70
------------------------------
你发起了攻击,【敌人】剩余血量0
【敌人】发起了攻击,【玩家】剩余血量40
------------------------------
敌人死翘翘了,你赢了!!
  • 游戏进程感:需要 添加计时器
计时器:
import time   #调用time模块
time.sleep(secs)   
#使用time模块下面的sleep()函数,括号里填的是间隔的秒数(seconds,简称secs)
#time.sleep(1.5)就表示停留1.5秒再运行后续代码

完整的版本1.0代码:

import time   #调用time模块

print('【玩家】\n血量:100\n 攻击:50')
print('------------------------------')
time.sleep(1.5)
print('【敌人】\n血量:100\n攻击:30')
print('------------------------------')
time.sleep(1.5)

print('你发起了攻击,【敌人】剩余血量50')
print('【敌人】发起了攻击,【玩家】剩余血量70')
print('------------------------------')
time.sleep(1.5)

print('你发起了攻击,【敌人】剩余血量0')
print('【敌人】发起了攻击,【玩家】剩余血量40')
print('------------------------------')
time.sleep(1.5)

print('敌人死翘翘了,你赢了!!')
  • 版本1.0 明显缺陷
  • 1玩家设定自己说了算,胜负没有悬念;
  • 2战斗过程血量手动计算

版本2.0:随机属性,自动PK

  • 版本2.0增加【随机属性】和【自动战斗】功能

流程

  • 1.随机生成玩家和敌人的属性

  • 2.显示玩家和敌人属性

  • 3.PK过程展示,自动攻击扣血

  • 1 生成随机角色:生成随机整数(百度一下)用到random模块里的**randint()**函数

------------基本代码------------

#代码
import random
a=random.randint(1,100)#随机生成1-100的整数,可多试几次代码
print(a)
#显示
多次运行出现1-100(包含)的随机整数
  • 正式使用;
  • 1)定义两个变量,储存玩家的血量、攻击力数值
  • 2)血量是100-150随机数,攻击力是30-50的随机数
  • 3)将两个变量打印出来、

-----------角色属性—随机设定代码------------

#代码
import random
import time
#生成敌人随机属性
player_blood=random.randint(100,150)#定义玩家血量:100-150随机
player_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
enemy_blood=random.randint(100,150)#定义玩家血量:100-150随机
enemy_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
print('【玩家】\n'+'血量: '+str(player_blood)+'\n攻击: '+str(player_attact))
print('------------------------------------------')
time.sleep(1)
print('【敌人】\n'+'血量: '+str(enemy_blood)+'\n攻击: '+str(enemy_attact))
print('------------------------------------------')
time.sleep(1)
  • 2 自动PK
  • 从版本1.0的人为战斗寻找规律:战斗的过程是重复代码!!—利用循环结构:for…in…还是 while…??
  • 由于血量和攻击是随机的,因此,战斗回合未知,即循环次数未知,故使用while循环
  • 直到一方血量为0,结束战斗。故执行while循环的条件,双方血量均大于0,不死不休。

while内部填充?
攻击力不变,血量更新:
【玩家】当前血量=【玩家】血量-【敌人】攻击
【敌人】当前血量=【敌人】血量-【玩家】攻击

------------------------------------------------自动PK-代码-------------------------------------------------------------------------

#代码
import time
#生成敌人随机属性
player_blood=random.randint(100,150)#定义玩家血量:100-150随机
player_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
enemy_blood=random.randint(100,150)#定义玩家血量:100-150随机
enemy_attact=random.randint(30,50)#定义玩家攻击力:30-50随机
print('【玩家】\n'+'血量: '+str(player_blood)+'\n攻击: '+str(player_attact))
print('------------------------------------------')
time.sleep(1)
print('【敌人】\n'+'血量: '+str(enemy_blood)+'\n攻击: '+str(enemy_attact))
print('------------------------------------------')
time.sleep(1)

while(player_blood>0 and enemy_blood>0):
   player_blood=player_blood-enemy_attact
   enemy_blood=enemy_blood-player_attact
   print('你发起了攻击,【敌人】剩余血量:'+str(enemy_blood))
   print('【敌人】发起了攻击,【玩家】剩余血量:' + str(player_blood))
   print('----------------
  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值