ExcelのVBAでライフゲームを作りたいのですが、次のプログラムの途中以降がわかりません。
もしよろしければ、このつづきの簡単な実行できるVBAライフゲームを教えてください。
続きのプログラムを教えていただけたら幸いです。
Option Explicit
Const ALIVE As Integer = 1
Const DEAD As Integer = 0
Const SIZE As Integer = 19
Const Tmax As Integer = 100
Dim C(SIZE, SIZE) As Integer
Sub LifeGame()
Dim InitRate As Single
Dim T As Integer
Dim N As Integer
Dim Cnext(SIZE, SIZE) As Integer
Dim I As Integer, J As Integer
InitRate = -1
Do While InitRate < 0 Or 1 < InitRate
Loop
For I = 0 To SIZE
For J = 0 To SIZE
If Rnd() < InitRate Then
C(I, J) = ALIVE
Else
C(I, J) = DEAD
End If
Next J
Next I
For T = 1 To Tmax
For I = 0 To SIZE
For J = 0 To SIZE
If C(I, J) = ALIVE Then
Cells(I + 1, J + 1).Value = "■"
Else
Cells(I + 1, J + 1).Vallue = ""
End If
Next J
Next I
For I = 0 To SIZE
For J = 0 To SIZE
N = Count(I, J)
Next J
Next I
For I = 0 To SIZE
For J = 0 To SIZE
C(I, J) = Cnext(I, J)
Next J
Next I
Next T
End Sub
Function Count(I As Integer, J As Integer) As Integer
End Function
No.1ベストアンサー
- 回答日時:
このままの形を残して作ると無駄が多すぎるのと、画面表示が遅すぎるので、多少変更、削除しました。
コードはWorkbookに貼り付ける事を前提に作ってあります。
選択済み以外のセルをクリックするとスタートします。
ルールはWikiの内容を参考にしました。BORNとLIFEの値(0~8の範囲)を変更するとパターンも変わります。
http://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4% …
Option Explicit
Const ALIVE As Integer = 1
Const DEAD As Integer = 0
Const BORN As Integer = 3 '加筆
Const LIFE As Integer = 2 '加筆
Const SIZE As Integer = 20 '19を20に変更
Const Tmax As Integer = 100
Dim C(SIZE, SIZE) As Integer
Dim Xrange As Variant '加筆
Private Sub LifeGame() 'Private
Dim InitRate As Single
Dim T As Integer
'Dim N As Integer 不要
'Dim Cnext(SIZE, SIZE) As Integer 不要
Dim I As Integer, J As Integer
Randomize '加筆
Xrange = Range("A1:T20") '加筆
InitRate = 0.5 '-1を0.5に変更
'Do While InitRate < 0 Or 1 < InitRate 不要
'Loop
For I = 1 To SIZE '初期値0を1に変更
For J = 1 To SIZE '初期値0を1に変更
If Rnd() < InitRate Then
C(I, J) = ALIVE
Else
C(I, J) = DEAD
End If
Next J
Next I
For T = 1 To Tmax
For I = 1 To SIZE '初期値0を1に変更
For J = 1 To SIZE '初期値0を1に変更
If C(I, J) = ALIVE Then
Xrange(I, J) = "■" '訂正
Else
Xrange(I, J) = "" '訂正
End If
Next J
Next I
Range("A1:T20") = Xrange '加筆
' For I = 0 To SIZE 不要
' For J = 0 To SIZE
' N = Count(I, J)
' Next J
' Next I
For I = 1 To SIZE '初期値0を1に変更
For J = 1 To SIZE '初期値0を1に変更
C(I, J) = Cnext(I, J)
Next J
Next I
Next T
End Sub
Function Cnext(I As Integer, J As Integer) As Integer 'Function名変更
Dim xi As Integer
Dim xj As Integer
Dim xsum As Integer
For xi = I - 1 To I + 1
For xj = J - 1 To J + 1
If (xi > 0 And xi <= SIZE) _
And (xj > 0 And xj <= SIZE) Then
If Not (xi = I And xj = J) Then
If C(xi, xj) = ALIVE Then
xsum = xsum + 1
End If
End If
End If
Next
Next
Select Case xsum
Case BORN
Cnext = ALIVE
Case LIFE
Cnext = C(I, J)
Case Else
Cnext = DEAD
End Select
End Function
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Call LifeGame
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) A列B列C列 3 2023/04/26 18:11
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) このマクロの説明文を教えてほしいです。 1 2023/01/12 09:17
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:07
- Visual Basic(VBA) VBA 配列を使ったコードに直していただけますか 4 2023/05/06 15:18
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:13
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) For~Nextステートメントの終了条件について 1 2023/01/08 18:36
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
表札に番地を入れる場合
-
名前と年齢から住所を特定でき...
-
運転免許の住所変更を半年し忘...
-
地名の読み方を調べる方法を教...
-
免許証の住所変更と免許更新に...
-
パンフレットの正誤表(変更表...
-
会社宛の書留郵便の受け取り
-
運転免許証の書き換え
-
携帯ショップで働きたいですが...
-
愛知県での免許更新手続きと住...
-
なぜ携帯新規契約で公共料金の...
-
入札の委任状の代理人の住所
-
住所をコロコロ変える会社
-
市役所や免許センターの開設時間
-
普通自動車免許更新についての...
-
他県に行って、家がない状態で...
-
職場での住所録
-
警察署での住所変更
-
パーティーの招待状について。
-
起点住所とは何ですか? 赴任旅...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
運転免許の住所変更を半年し忘...
-
表札に番地を入れる場合
-
会社宛の書留郵便の受け取り
-
地名の読み方を調べる方法を教...
-
北海道の住所表記について
-
住所をコロコロ変える会社
-
他県でも口座は作れますか?
-
エアメール(会社宛)の宛名の...
-
住民票のない居住地で国民健康...
-
ご近所ワークって 住所や氏名が...
-
引越した場合の給与支払報告書...
-
パンフレットの正誤表(変更表...
-
不登法 賃借権の登記名義人の住...
-
一年で2回以上引っ越した場合...
-
幽霊ラーメン屋
-
運転免許証の住所をあまり見せ...
-
試用期間中の一日休むことについて
-
二級建築士の住所変更について...
-
訂正印について
-
別居中の場合、派遣会社にはど...
おすすめ情報