fotran程序完善

没想到二关关底的这段还挺难写,在if块中判断.true.和.false.的方法上卡住了

改天决定直接用赋值这样粗暴的方法,赋值再判断还是简单的吧

这点块其实已经可以运行了

program test_01
implicit none
   integer::hp=100
integer::xz
integer::round
integer::round2
integer::zxd=3  !止血带数量
integer::sx=0   !失血程度
integer::xl=100 !失血最大量
integer::move !冲锋阶段选择
integer::mover !冲锋阶段计数
integer::act=1
integer::exp=1
integer::aidkit=2
integer::trangle=2
integer::bandage=2
integer::jijiu
integer::e
integer::hujiu
integer::jiuren=0
integer::ss=0
integer::gjxz
integer::zd=0
integer::xunlian
integer::xlxz
integer::cf
integer::lxcd !判断流血,伤势程度
integer::zqxz !炸碉堡前的准备
integer::lx=0 !判断是否流血
real::o=0
real::p=0
real::q=0
real::randNum
real::lbound,ubound
real::my_random

     print*,'战斗已经进行到了最后的阶段' 
     print*,'同志们正一鼓作气,对敌人的阵地发起冲锋'
     print*,'可一个掩藏的很好的暗堡突然开火,前方的同志纷纷中弹倒地'
     print*,'可这些勇敢的战友依然挣扎着爬起身来互相掩护,勇敢向前'
     print*,'你看到了这副情景,眼里全是对敌人的悲愤'
     print*,'你下定决心,从负伤的爆破手手里接过炸药包,决定除掉这个“眼中钉”'
     print*,'在腰间缠好了三条止血带,你整理好身上的装备,握紧武器,冒着弹雨迎了上去'
     print*,'             “止血带”现在可以使用了        '
     print*,'        “止血带”可以强行回复耐力值到80       '
     print*,'            并防止伤处由于大出血而恶化   '
     print*,'         但有数量限制,并只能包扎腿部枪伤'
     print*,'    即使处理伤口,也照样有失去意识乃至牺牲的风险,   '
     print*,'        腹部,胸部中弹仍只能用绷带,三角巾处理  '
     print*,'    但由于要摧毁的暗堡位置较低,腿部中弹的几率更大'
     print*,'    机枪子弹也会对命中的部位造成动脉贯穿导致的大出血'
     print*,'          所以要随时注意自己的伤势和失血情况   '
     print*,'剩余耐力值:',hp
     print*,'身上有',zxd,'条止血带',bandage,'卷绷带',trangle,'块三角巾'
     print*,'时间紧迫,你心急如焚,只有一点准备时间,你选择:'
     print*,'1:处理旧伤,2:补充绷带,3:补充三角巾'
     read*,zqxz
      if(zqxz<1.5) then
      print*,'你重新将身上包扎起来的伤口检查了一下,做了最后的止血处理'
      hp=90
      goto 9000
      elseif(zqxz>1.5.and.zqxz<2.5) then
      print*,'你从卫生员手里接过了几卷新的纱布,以防万一'
      bandage=(bandage+2)
      goto 9000
      elseif(zqxz>2.5.and.zqxz<3.5) then
      print*,'你从卫生员手里接过了几卷新的纱布,以防万一'
      trangle=(trangle+2)
      goto 9000
      end if


    
9000 do cf=1,20,1
     call random_seed()
    randNum=my_random(0.0,200.0)
    print*,'你背着爆破筒,紧紧端着武器,机警地观察着前方的情况'
    if(randNum>=0.0.and.randNum<=100.0) then
    print*,'你发现暗堡中的机枪正向右边瞄准'
    print*,'你心中一沉,决定:'
    print*,'1,向右翻身,寻找掩蔽,2,合身向左边扑去'
     read*,move
     if(move>1.5) then !这么做是对的
      if(randNum>0.0.and.randNum<=170) then
      print*,'你躲闪过了射来的子弹'
      mover=(mover+1)
      elseif(randNum>170.and.randNum<=200.0) then
      print*,'纵使你果断地做出了反应,子弹还是'
      goto 9001
      end if
     
     elseif(move<1.5) then !这么做是错的
     if(randNum>0.0.and.randNum<=170) then
      print*,'敌人的射击封锁了你前进的路线'
      goto 9001
      elseif(randNum>170.and.randNum<=200.0) then
      print*,'你心中一紧,本以为自己会中弹'
      mover=(mover+1)
      end if
     end if
    elseif(randNum>100.0.and.randNum<=200.0) then
    print*,'你发现暗堡中的机枪正向左边瞄准'
    print*,'你心中一沉,决定:'
    print*,'1,向右翻身,寻找掩蔽,2,合身向左边扑去'
    read*,move
     if(move<1.5) then !这么做是对的
     if(randNum>0.0.and.randNum<=170) then
      print*,'你躲闪过了射来的子弹'
      mover=(mover+1)
      elseif(randNum>170.and.randNum<=200.0) then
      print*,'纵使你果断地做出了反应,子弹还是'
      goto 9001
      end if
     elseif(move>1.5) then !这么做是错的
      if(randNum>0.0.and.randNum<=170) then
      print*,'敌人的射击封锁了你前进的路线'
      goto 9001
      elseif(randNum>170.and.randNum<=200.0) then
      print*,'你心中一紧,本以为自己会中弹'
      mover=(mover+1)
      end if
     goto 9001
     end if
    end if
    end do

9001 print*,'test/'
     call random_seed()
     randNum=my_random(0.0,200.0)
     if(randNum<=90.0.and.randNum>=0) then
     print*,'数发子弹呼啸着钻进了你的左大腿'
     hp=(hp-70)
     lx=1
     goto 9002
     elseif(randNum>90.0.and.randNum<=180.0) then
     print*,'好几发子弹呼啸着钻进了你的右大腿'
     hp=(hp-70)
     goto 9002
     elseif(randNum>180.0.and.randNum<=190.0) then
     print*,'几发流弹打中了你的肚子,你捂着肚子倒了下去'
     hp=(hp-70)
     goto 9003
     elseif(randNum>190.0.and.randNum<=200.0) then
     print*,'子弹命中了你的左肋,登时血流如注'
     hp=(hp-70)
     goto 9004
     end if

9002 print*,'test/'
     print*,'没有时间了,你在腰间摸索着止血带,一边望向自己的伤口,却突然愣住了'
     print*,'数个弹孔赫然使血肉模糊的伤口连成了一片,整条裤腿都被染红了'
     print*,'剧痛中的你意识到,这恐怕是大出血,只能用止血带暂时处理'
     if(zxd<=0) then
     print*,'可是,用来救命的止血带已经用完了,你受伤的频率和严重程度已经超出了想象'
     print*,'但是,选择了这项可能有去无回的任务,你就已经下定了决心'
     print*,'你只能用一只手按着伤口,拖着失去知觉的伤腿继续向前'
     goto 9000
     elseif(zxd>0)then
     print*,'你咬紧牙关,把止血带捆在伤口上沿绕了一圈'
     print*,'然后在地上摸索到了一根木棍,把它卡在了止血带下随时能够到的地方'
     print*,'不顾伤腿那令人麻木的剧痛,狠狠的转了几圈,把止血带勒紧'
     print*,'然后又将橡皮管子绕了一圈,系在了木棍把手上'
     print*,'弹孔中涌出的血逐渐变少,你咬咬牙,翻身又开始了前进'
     zxd=(zxd-1)
     goto 9000
     endif
     

9003 print*,'test/'
     print*,'你没有想到,腹部被暗堡中的机枪打中居然会产生如此的痛楚'
     print*,'你已经不敢再去检查被鲜血染的通红的腹部伤口,但你知道'
     print*,'你的时间,恐怕不多了,'
     print*,'你叹了口气,腹部的大出血根本不能用止血带处理'
     print*,'没时间犹豫,你掏出急救包,强忍着眼前发黑的剧痛翻找着'
     print*,'你的身上有',zxd,'条止血带',bandage,'卷绷带',trangle,'块三角巾'
    
9004 print*,'test/'
     print*,'你没有想到,腹部被暗堡中的机枪打中居然会产生如此的痛楚'
     print*,'你已经不敢再去检查被鲜血染的通红的腹部伤口,但你知道'
     print*,'你的时间,恐怕不多了,'
     print*,'你叹了口气,腹部的大出血根本不能用止血带处理'
     print*,'没时间犹豫,你掏出急救包,强忍着眼前发黑的剧痛翻找着'
     print*,'你的身上有',zxd,'条止血带',bandage,'卷绷带',trangle,'块三角巾'

end

function my_random (lbound,ubound)
implicit none
 real :: lbound,ubound
 real :: len
 real :: my_random
 real :: t
 
 len=ubound-lbound  
 call random_number(t)  
 my_random=lbound+len*t


 return
  read(*,*)
  end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值