找回密码
 加入
搜索
查看: 11603|回复: 22

[AU3基础] 关于For的循环问题,实在是头大了..求教!![附代码-已解决]

 火.. [复制链接]
发表于 2011-3-22 00:37:30 | 显示全部楼层 |阅读模式
本帖最后由 apibits 于 2011-3-26 08:02 编辑

请教大家,关于For的循环方法...
首先是提前的变量
Global $Level[21] 
$Level[3] = 2660
$Level[4] = 3620
$Level[5] = 4700
$Level[6] = 6982
$Level[7] = 9478
$Level[8] = 12441
$Level[9] = 15884
$Level[10] = 21801
$Level[11] = 26680
$Level[12] = 30144
$Level[13] = 38540
$Level[14] = 44250
$Level[15] = 57850
$Level[16] = 59456
$Level[17] = 66410
$Level[18] = 77000
$Level[19] = 80000
$Level[20] = 100000
问题是 如果我给出当前的Level是3级, 然后给出后面的经验 比如 50000 那么怎样用For循环 减除 在我是3级的情况下 给我50000 我该升级到那个等级?

如果当前等级为5级,已经拥有经验50000, 那么你最多可以升到?级,剩余?经验
问题实际上就是这句话.....  应该怎么用For呢?  求教啊...跪求





问题已经解决...谢谢了....
发表于 2011-3-22 00:50:33 | 显示全部楼层
为什么要用for呢 对于这种不知道要算几次问题最好用while
用for的话 也可以 只是要加exitloop
我写个while的不介意吧?
 楼主| 发表于 2011-3-22 00:54:11 | 显示全部楼层
回复 2# love5173


  关键是我现在就卡在这里了...实在是不知道到底用For还是 While  了...
崩溃...掩面泪奔中...
发表于 2011-3-22 01:09:18 | 显示全部楼层
那就FOR吧
Global $Level[21] 

$Level[3] = 2660

$Level[4] = 3620

$Level[5] = 4700

$Level[6] = 6982

$Level[7] = 9478

$Level[8] = 12441

$Level[9] = 15884

$Level[10] = 21801

$Level[11] = 26680

$Level[12] = 30144

$Level[13] = 38540

$Level[14] = 44250

$Level[15] = 57850

$Level[16] = 59456

$Level[17] = 66410

$Level[18] = 77000

$Level[19] = 80000

$Level[20] = 100000

$a=InputBox("请输入给的经验","","50000")
Global $LV=0
For $i=3 To 21
        If $i=21 Then
                MsgBox(0,"","您放心您肯定大于20级")
                EndIf
        $LV=$LV+$Level[$i]
        If $a<$LV Then 
                $i=$i-1
                MsgBox(0,"您可以升到的级别为",$i)
                ExitLoop
        EndIf
发表于 2011-3-22 01:11:18 | 显示全部楼层
不好意思 写的有点跟你的初衷有点不一样,如果需要我给你修改说下,如果觉得我给的提示够多了,自己去完善吧
发表于 2011-3-22 01:16:06 | 显示全部楼层
Global $Level[21] 

$Level[3] = 2660

$Level[4] = 3620

$Level[5] = 4700

$Level[6] = 6982

$Level[7] = 9478

$Level[8] = 12441

$Level[9] = 15884

$Level[10] = 21801

$Level[11] = 26680

$Level[12] = 30144

$Level[13] = 38540

$Level[14] = 44250

$Level[15] = 57850

$Level[16] = 59456

$Level[17] = 66410

$Level[18] = 77000

$Level[19] = 80000

$Level[20] = 100000

$a=InputBox("请输入给的经验","","50000")
Global $i=InputBox("请输入当前级别","","3")
Global $LV=0
For $i=$i To 21
        If $i>=21 Then
                MsgBox(0,"","您放心您肯定大于20级")
                EndIf
        $LV=$LV+$Level[$i]
        If $a<$LV Then 
                $i=$i-1
                MsgBox(0,"您可以升到的级别为",$i)
                ExitLoop
        EndIf

Next        
 楼主| 发表于 2011-3-22 01:23:26 | 显示全部楼层
本帖最后由 apibits 于 2011-3-22 01:25 编辑

回复 6# love5173


   稍等....先感谢了......我用你这个步骤  自己改下试试看~~~ 谢谢~

求解释....   $Lv=$Lv+$Level[$i]  这一句的意思.,,,,谢谢
发表于 2011-3-22 01:30:14 | 显示全部楼层
回复 7# apibits
这个是递增,就是把你前面级别需要经验加起来,不知道你是不是这个意思,我是这么理解的,如果不是的话,那就更简单了,直接判断$Level[$I]<5000<$Level[$I+1]就可以了
 楼主| 发表于 2011-3-22 02:03:51 | 显示全部楼层
回复 8# love5173


    我是从这段话翻译到Au3的  原本是Java脚本.....能帮忙解释下这个意思么?  谢谢了.....
for(var 等级 = 输入框(等级); 等级 <= 20; 等级++){
        if(typeof Level[等级] != 'undefined'){
             tempExp += parseInt(Level[等级]);
                if(tempExp == 输入框(当前拥有经验)){
                        升级等级 = 等级 + 1;
                                break;
                        }else if (tempExp > curExp){
                                升级等级 = 等级;
                                break;
                        }
                }
                if(等级 == 20){
                        升级等级 = 等级;
                }
        }
        if(升级等级 < 原始等级) {
                升级等级 = 原始等级;
发表于 2011-3-22 10:42:05 | 显示全部楼层
本帖最后由 gapkiller 于 2011-3-22 10:43 编辑

Global $level[21] = [0, 800, 1760, 2660, 3620, 4700, 6982, 9478, 12441, 15884, 21801, 26680, 30144, 38540, 44250, 57850, 59456, 66410, 77000, 80000, 100000]
$Current_EXP = InputBox("Input", "输入当前经验值")
$Upgrade_EXP = InputBox("Input", "输入升级经验值")
$NextLevel = 0
For $i = 0 To 20
        If $Current_EXP+$Upgrade_EXP >= $level[$i] Then $NextLevel=$i
Next
MsgBox(0,0, "可以升级到Level: " & $NextLevel & @LF & "剩余经验值: " & $Current_EXP+$Upgrade_EXP-$level[$NextLevel])
发表于 2011-3-22 14:01:55 | 显示全部楼层
这里有个问题: $Level[3] = 2660, $Level[4] = 3620
是等级4的时候经验值是3620,还是还需要经验值3620?
发表于 2011-3-22 21:52:32 | 显示全部楼层
for 下递增
发表于 2011-3-22 22:05:53 | 显示全部楼层
回复 9# apibits
我对java表示不懂 请其他人解答
 楼主| 发表于 2011-3-24 11:33:08 | 显示全部楼层
回复 11# 3mile


    Level[3] = 2660 也就是 升级到4J需要 2660经验
而4那个就是升级到5级的经验
 楼主| 发表于 2011-3-24 11:34:02 | 显示全部楼层
本帖最后由 apibits 于 2011-3-24 12:09 编辑

回复 10# gapkiller


    感谢Gap 我需要自己消化下这几行代码的意思.



P.s
for(var 等级 = 输入框(等级); 等级 <= 20; 等级++){
        if(typeof Level[等级] != 'undefined'){                    ;;;;;------这一句不知道啥意思,,,,  判断输入的是不是数字?
             tempExp += parseInt(Level[等级]);             ;;;;;这一句的+= 算啥????/
                if(tempExp == 输入框(当前拥有经验)){
                        升级等级 = 等级 + 1;
                                break;
                        }else if (tempExp > 当前拥有经验){
                                升级等级 = 等级;
                                break;
                        }
                }
                if(等级 == 20){
                        升级等级 = 等级;
                }
        }
        if(升级等级 < 原始等级) {
                升级等级 = 原始等级;
上面这段话翻译成Au3 应该怎么写呢?
For dim $Gamelevel = InputBox("Input", "当前等级") To $Gamelevel<=20
$TempExp + $TempExp = Level[$Gamelevel]
if $TempExp = InputBox("Input", "已经有的经验值")  then  $升级等级 = $Gamelevel + 1
....
....
....
;弄不懂了...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-29 18:17 , Processed in 0.084923 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表