tcpuuu 发表于 2012-4-27 16:59:54

建立1400格 可幫我簡短 語法嗎? [已解决]

本帖最后由 tcpuuu 于 2012-5-20 11:49 编辑


=============================GUICreate("UP AND DOWN",836,596, -1, -1)
;============================================================================
Global $EO=10,$KU=10,$KI=12,$KO=12;右;上;寬;高
local $T
For $i = 0 To 1399
$T[$i] = GUICtrlCreateLabel("",$EO,$KU,$KI,$KO,0x01)
$KU+=13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;每格間隔
IF $i = 13 then $EO+=13
IF $i = 13 then $KU=10
IF $i = 27 then $EO+=13
IF $i = 27 then $KU=10
IF $i = 41 then $EO+=13
IF $i = 41 then $KU=10
IF $i = 55 then $EO+=13
IF $i = 55 then $KU=10
IF $i = 69 then $EO+=13
IF $i = 69 then $KU=10
IF $i = 83 then $EO+=13
IF $i = 83 then $KU=10
IF $i = 97 then $EO+=13
IF $i = 97 then $KU=10
IF $i = 111 then $EO+=13
IF $i = 111 then $KU=10
IF $i = 125 then $EO+=13
IF $i = 125 then $KU=10

GUICtrlSetBkColor($T[$i],0xFFFFFF)
GUICtrlSetData($T[$i],$i)
Next
;--------------------------------------
GUISetState()
While 1
      $msg = GUIGetMsg()
      Switch $msg
                Case -3
                        Exit         
      EndSwitch
WEnd===================================
IF $i = 13 then $EO+=13
IF $i = 13 then $KU=10
IF $i = 27 then $EO+=13
IF $i = 27 then $KU=10
IF $i = 41 then $EO+=13
每個都相差14如何簡短?

shqf 发表于 2012-4-27 17:04:35

本帖最后由 shqf 于 2012-4-27 17:06 编辑

用or或用循环,如用or,可如下IF $i = 13 or $i = 27 or $i = 41 then
$EO=$EO+13
$KU=10
endif

tcpuuu 发表于 2012-4-27 17:07:07

這樣 OR 下去也得要 100個以上
還有更精簡的嗎?

502762378 发表于 2012-4-27 17:14:09

本帖最后由 502762378 于 2012-4-27 17:26 编辑

    If $i>=13 And Mod($i-13,14)=0 Then
                $EO=$EO+13
                $KU=10
    EndIf

tcpuuu 发表于 2012-4-27 19:07:06

本帖最后由 tcpuuu 于 2012-4-27 19:31 编辑


======================GUICreate("UP AND DOWN",1310,296, -1, -1)
;============================================================================
Global $EO=2,$KU=10,$KI=12,$KO=12;右;上;寬;高
local $Tsc
For $i = 0 To 1399
$Tsc[$i] = GUICtrlCreateLabel("",$EO,$KU,$KI,$KO,0x01)
$KU+=13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;每格間隔
If $i>=13 And Mod($i-13,14)=0 Then
                $EO=$EO+13
                $KU=10
    EndIf

GUICtrlSetBkColor($Tsc[$i],0xFFFFFF)
GUICtrlSetData($Tsc[$i],$i)
Next

For $i = 7 To 1393 Step 14
GUICtrlSetBkColor($Tsc[$i],0xFFFF00)
Next

$1Button = GUICtrlCreateButton("走高", 200, 196, 40,30);建按鈕控件
$2Button = GUICtrlCreateButton("走平", 200, 226, 40,30);建按鈕控件
$3Button = GUICtrlCreateButton("走低", 200, 256, 40,30);建按鈕控件
;--------------------------------------
$bj = $Tsc
GUISetState()
While 1
      $msg = GUIGetMsg()
      Switch $msg
                Case -3
                        Exit         
      
Case $1button
$bj+=13
GUICtrlSetBkColor($bj,0xFF0000)
Case $2button
$bj+=14
GUICtrlSetBkColor($bj,0xFF0000)
Case $3button
$bj+=15
GUICtrlSetBkColor($bj,0xFF0000)
EndSwitch
WEnd==================================================
再次請問 當 紅色已經在最高點再按走高紅色依然是在隔壁的最高點               
                        當 紅色已經在最低點再按走低紅色依然是在隔壁的最低點

這該如何?

user3000 发表于 2012-4-27 19:35:23

回复 5# tcpuuu
把下面代码替换掉你自己相应注释行以下的所有代码
$bj = $Tsc
$line = 7
GUISetState()
While 1
        $msg = GUIGetMsg()
        Switch $msg
                Case -3
                        Exit

                Case $1Button
                        If $line <> 0 Then
                                $bj += 13
                                $line -= 1
                        Else
                                $bj += 14
                        EndIf
                        GUICtrlSetBkColor($bj, 0xFF0000)
                Case $2Button
                        $bj += 14
                        GUICtrlSetBkColor($bj, 0xFF0000)
                Case $3Button
                        If $line <> 13 Then
                                $bj += 15
                                $line += 1
                        Else
                                $bj += 14
                        EndIf
                        ConsoleWrite($bj & @CR)
                        GUICtrlSetBkColor($bj, 0xFF0000)
        EndSwitch
WEnd

502762378 发表于 2012-4-27 20:14:07


While 1
      $msg = GUIGetMsg()
      Switch $msg
                Case -3
                                        Exit   
                Case 3
                                        MsgBox(1,1,3)                       
                Case $1button
                                        If Mod($bj,14) = 3 Then
                                                $bj+=14
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                        Else
                                                $bj+=13
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                        EndIf
                                Case $2button
                                                $bj+=14
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                Case $3button
                                        If Mod($bj,14) = 2 Then
                                                $bj+=14
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                        Else
                                                $bj+=15
                                                GUICtrlSetBkColor($bj,0xFF0000)
                                        EndIf
EndSwitch
WEnd

tcpuuu 发表于 2012-4-27 20:14:33

嗯嗯! 感謝user3000 解說
======================
如果要 這個紅色 跑到 中間黃色地帶改成黃色 GUICtrlSetBkColor($bj,0xFFFF00)
                     跑道中間黃色地帶以下 改成綠色GUICtrlSetColor($bj,0x008000)
================================================
該如何?

user3000 发表于 2012-4-27 20:25:48

本帖最后由 user3000 于 2012-4-27 20:29 编辑

回复 8# tcpuuu

我把变量$line = 7 放在 $bj = $Tsc 下面,就是想让你知道 $line 变量的意义, 它代表 '颜色点'所在的'行'啊!
   一开始 是中间   黄色.....上移是减小 $line 红色,,, 下移是增大 $line 绿色
If   $Line = 7   then
       GUICtrlSetBkColor($bj,0xFFFF00)
      Elseif $Line > 7Then
      GUICtrlSetColor($bj,0x008000)
      Else
      GUICtrlSetBkColor($bj, 0xFF0000)
Endif

afan 发表于 2012-4-27 20:48:45

数字都显示不全,不如不显示。加个ToolTip都好点。

tcpuuu 发表于 2012-4-27 22:09:58

本帖最后由 tcpuuu 于 2012-4-27 22:12 编辑

了解了! 如果不是在第0行$bj + 13 行數減1 向上

数字都显示不全(因為眾多格 格子小) 沒關係啦0 to 13 行 看清就好
都正確了 GUICtrlSetData($Tsc[$i],$i) 這行就要拿掉

7樓寫的 那一段是什麼?

502762378 发表于 2012-4-27 23:25:09

本帖最后由 502762378 于 2012-4-27 23:30 编辑

怎么都觉得没有三千兄的码简单。。

user3000 发表于 2012-4-28 00:21:29

回复 12# 502762378
汗, 你的代码思路很新颖, 也很有学习借鉴之处啊!
页: [1]
查看完整版本: 建立1400格 可幫我簡短 語法嗎? [已解决]