VB6 八后棋(EightQueen)原碼與註解(慢動作播放執行檔)

Home Home
引用 | 編輯 三仙
2008-11-13 22:11
樓主
推文 x5
有會員反應不會寫這類題目
故將我寫的原始程式與註解公佈
歡迎大家參予這次的活動
只要能符合八后棋的規則
都是可以加入比賽的

Option Explicit
Dim xy(1 To 8, 1 To 8) As String
Dim i As Integer, j As Integer, k As Integer, cnt As Integer, rule As Integer, tot As Integer
Dim g As Integer, h As Integer
Dim tmpx As Integer, tmpy As Integer
Private Sub Check1_Click() '開關座標
    Text1.Visible = Not Text1.Visible
    Text3.Visible = Not Text3.Visible
End Sub
Private Sub Command1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) '座標效果
    With Command1(Index)
        Text1.Top = .Top + 220: Text1.Left = .Left - 3500
        Text3.Top = .Top - 3500: Text3.Left = .Left + 220
    End With
End Sub
Private Sub Command1_Click(Index As Integer) '單局八后棋
    judgequeen Index
    If cnt Mod 8 = 0 And rule = 0 Then
        Text2.Text = Text2.Text & "恭禧完成一組八后棋!!": cnt = 0
    ElseIf cnt Mod 8 = 4 And rule = 0 Then
        Text2.Text = Text2.Text & " 加油 ^^ 剩 " & 8 - cnt & Chr(13) & Chr(10)
    ElseIf cnt Mod 8 <> 0 And rule = 0 Then
        Text2.Text = Text2.Text & " 剩 " & 8 - cnt & Chr(13) & Chr(10)
    End If
End Sub
Private Sub Command2_Click() '列出組合清單
Dim i1 As Integer, j1 As Integer
Dim startime As Date
startime = Now
clsxyicon 1, 1
Text2.Text = "": Text2.Text = "開始時間 " & Format(Now, "hh:mm:ss") & Chr(13) & Chr(10)
Text2.Text = Text2.Text & "-------------------------------------------------" & Chr(13) & Chr(10)
tot = 0
For i = 1 To 8 '四面的組合都是一樣,只求一面即可
    tmpx = i: tmpy = 1: recxy
    For i1 = 1 To 8 '二元樹規範取得八后
        For j1 = 1 To 8
            tmpx = i1: tmpy = j1: recxy
            If rule = 0 Then '取得每一Y軸所有皇后的位置
                doxyicon
                If i1 = 8 Then '當X軸在8且又可放皇后則列出組合
                    calarrQ
                    If Check2.Value = 1 Then
                        Dim yn As Integer
                        yn = MsgBox("第 " & tot & " 組,是否繼續!!", vbYesNo)
            ..

訪客只能看到部份內容,免費 加入會員



獻花 x4
引用 | 編輯 students1
2008-11-14 01:37
1樓
  
看起來有一點難度唷~~~
消化原碼中~~~謝謝三仙大大分享~~ 表情

獻花 x0
引用 | 編輯 三仙
2008-11-14 02:10
2樓
  
   
下面是引用students1於2008-11-14 01:37(1樓)發表的 :
看起來有一點難度唷~~~
消化原碼中~~~謝謝三仙大大分享~~ 表情


希望這帖能有拋磚引玉的功能 表情
讓大家發揮自己的創意表情
不要有太大的壓力表情
把獎品拿回去表情

獻花 x0
引用 | 編輯 leacks
2008-11-17 08:55
3樓
  
你的好快
而且好齊全阿
大概要做出半自動完成才能比你的其全

獻花 x0
引用 | 編輯 三仙
2008-11-21 23:24
4樓
  
收件日期: 即日起 至 2008.12.1 00:00 (以系統時間為準,若參賽作品少於3件,將自動順延一個月)
請大家撥冗參加 表情

獻花 x0
引用 | 編輯 rchockxm
2008-11-22 08:44
5樓
  
不太清楚八后棋的玩法 表情

多謝 三仙 大分享源碼喔 表情

獻花 x0
引用 | 編輯 leacks
2008-11-22 11:43
6樓
  
八後棋=八皇后
皇后=西洋棋的皇后棋
蠻多歷史根據的,而巴皇后規則是傳承西洋棋皇后規則

獻花 x0
引用 | 編輯 三仙
2008-11-22 12:22
7樓
  
1. 八后棋是在一個 8x8 的矩陣格中放入8個棋子,而這8個棋的水平、垂直、斜線都不能碰到別的棋子
座標解題將皇后設定為(0,0)
水平座標不能放(x,0)
垂直座標不能放(0,x)
斜線座標不能放(+x,+x)、(-x,-x)
斜線座標不能放(+x,-x)、(-x,+x)
判斷無值再將皇后放入

下面是引用rchockxm於2008-11-22 08:44(5樓)發表的 :
不太清楚八后棋的玩法 表情

多謝 三仙 大分享源碼喔 表情


獻花 x0
引用 | 編輯 sulaa
2008-11-24 22:56
8樓
  
其時這學期剛學matlab課程
問老師稍有講一下因非關課程
還是有點想不清往那方面著手

獻花 x0
引用 | 編輯 s3748679
2008-12-02 22:56
9樓
  
延遲的方法是不是利用DoEvents搭配上Timer@@?
我是順便想問一下,假如已經執行了DoEvents但是再擬另一邊的程序假如又呼叫了DoEvents似乎會出事情...
而每次這種情況我都直接改成Timer而非使用DoEvents (我是想問一下為什麼會跳出錯誤...)
(補:假如DoEvents頻率太高,可以再加上一個程序附加一個靜態變數減少次數應該是個不錯的法^^")

獻花 x0
引用 | 編輯 三仙
2008-12-03 00:23
10樓
  
下面是引用s3748679於2008-12-02 22:56(9樓)發表的 :
延遲的方法是不是利用DoEvents搭配上Timer@@?
我是順便想問一下,假如已經執行了DoEvents但是再擬另一邊的程序假如又呼叫了DoEvents似乎會出事情...
而每次這種情況我都直接改成Timer而非使用DoEvents (我是想問一下為什麼會跳出錯誤...)
(補:假如DoEvents頻率太高,可以再加上一個程序附加一個靜態變數減少次數應該是個不錯的法^^")


1.延遲的方法是不是利用DoEvents搭配上Timer@@?
Ans.延遲的方式我不是使用DoEvents 搭配上Timer
       因為除了要寫多工控制器之外,我不太喜歡用Timer!!

2.執行了DoEvents但是再擬另一邊的程序假如又呼叫了DoEvents似乎會出事情...
Ans.我還沒遇過,你能提供一下錯誤的程序嗎??

3.想問一下為什麼會跳出錯誤...
Ans.至於你提及的跳出錯誤,是指這支程式嗎??

獻花 x0
引用 | 編輯 年輕戰士
2010-08-21 12:16
11樓
  
可惜不是用遞迴寫的,不然就可以交作業了

獻花 x0
引用 | 編輯 三仙
2010-08-21 22:01
12樓
  
下面是引用 年輕戰士 於 2010-08-21 12:16 發表的 : 到引言文
可惜不是用遞迴寫的,不然就可以交作業了


就是這樣
所才不用遞迴來做範例
而且那種觀念很難解釋

獻花 x0
引用 | 編輯 年輕戰士
2010-08-24 12:29
13樓
  
下面是引用 三仙 於 2010-08-21 22:01 發表的 : 到引言文


就是這樣
所才不用遞迴來做範例
而且那種觀念很難解釋


那你可以寫出來給大家參考嗎表情

獻花 x0
引用 | 編輯 optometrist
2010-12-07 20:36
14樓
  
對小弟而言,

這不只是利害

簡直就是超強

感謝分享~^^

獻花 x0
引用 | 編輯 chakflying
2010-12-16 16:45
15樓
  
很好的教學啊...
相信造象棋也可以吧......

獻花 x0
引用 | 編輯 mychat09087
2012-05-24 19:40
16樓
  
哇!我校沒教這麼難的程式呢,好像只教了number guessing game…… 表情 表情

獻花 x0
引用 | 編輯 tonylucy321
2012-12-13 18:57
17樓
  
看起來有一點難度啊但
不太清楚八後棋怎玩 表情

獻花 x0
引用 | 編輯 A2737612
2013-01-02 10:24
18樓
  
有源碼,拿去收藏了

獻花 x0