秋月 PIC-BASICでスロットマシーン?

PIC-BASIC の勉強のため、秋月の AKI-PIC BASIC 開発キットでスロットマシーン?を作成してみた。

画像


動作環境

  • Windows XP
  • AKI-PIC BASIC 開発キット
  • USB to シリアルケーブル ELECOM UC-SGT
  • 秋月のUSB-シリアル変換器に付属していたシリアル延長ケーブル
  • 可変抵抗 10KΩ
  • ミノムシクリップ
  • 10V 850mA ACアダプター(ファミコン・スーパーファミコン用、センタープラスをセンターマイナスにして使用)


プログラム その1


0から9まで順に表示していき、SW1を押すと順に数字が確定していくようなプログラムを書いた。


Dim i, j, sw As Byte

While 1
Initlcd

For i=0 To 2
sw = 1
While sw = 1
For j=0 To 9
Setpos i, 0
Putlcd j

If rb.Bit0=0 Then
sw = 0
j = 10 ' ループ脱出のため

' 500ミリ秒待つ
Sleep 500
Endif
Next
Wend
Next

While rb.Bit0=1
Wend

' 500ミリ秒待つ
Sleep 500
Wend


実行すると、0から9まで順に表示される。
画像


スイッチ SW1 を押すと、数字が順に確定していく
画像


プログラム その2


同じ数字がある場合に「Hit!」と表示し、全ての数字が同じ場合に「Big Hit!」と表示するようなプログラムを書いた。


Dim i, j, sw, any, all As Byte
Dim results(3) As Byte

While 1
Initlcd

For i=0 To 2
sw = 1
While sw = 1
For j=0 To 9
Setpos i, 0
Putlcd j

If rb.Bit0=0 Then
sw = 0
results(i) = j
j = 10 ' ループ脱出のため

' 500ミリ秒待つ
Sleep 500
Endif
Next
Wend
Next

' 結果表示
any = 0
all = 1
If results(0) = results(1) Then any = 1 Else all = 0
If results(0) = results(2) Then any = 1 Else all = 0
If results(1) = results(2) Then any = 1 Else all = 0
If all = 1 Then
Setpos 6, 0
Putlcd "Big Hit!"
Else
If any = 1 Then
Setpos 6, 0
Putlcd "Hit!"
Endif
Endif

While rb.Bit0=1
Wend

' 500ミリ秒待つ
Sleep 500
Wend


画像


画像


プログラム その3


同じ数字が出るよう頑張れるように、数字表示の間に Sleep を入れてみた。


Dim i, j, sw, any, all As Byte
Dim results(3) As Byte

While 1
Initlcd

For i=0 To 2
sw = 1
While sw = 1
For j=0 To 9
Setpos i, 0
Putlcd j

If rb.Bit0=0 Then
sw = 0
results(i) = j
j = 10 ' ループ脱出のため

' 500ミリ秒待つ
Sleep 500
Endif

' 100ミリ秒待つ(表示スピードの調整)
Sleep 100
Next
Wend
Next

' 結果表示
any = 0
all = 1
If results(0) = results(1) Then any = 1 Else all = 0
If results(0) = results(2) Then any = 1 Else all = 0
If results(1) = results(2) Then any = 1 Else all = 0
If all = 1 Then
Setpos 6, 0
Putlcd "Big Hit!"
Else
If any = 1 Then
Setpos 6, 0
Putlcd "Hit!"
Endif
Endif

While rb.Bit0=1
Wend

' 500ミリ秒待つ
Sleep 500
Wend


気がついた点


  • スイッチSW2からSW4まではどこにも接続されていなかった(マニュアルにも記載があった)。
  • 無限ループは「While 1 ~ Wend」で書けるが、変数 x の値が 1 でも「While x ~ Wend」は無限ループにならないようだ。
  • 「foo = 1 or foo = 2 or foo = 3」のような三つ以上の論理演算はダメ?
  • 開発環境ではファイルの外部での変化を見ていないようだ。読み込んでいるファイルを再度読み込もうとしても開発環境上で編集していない場合、読み込まれないようだ。

まとめ

  • 秋月の AKI-PIC BASIC 開発キットでスロットマシーン?を作成してみた。
  • いくつか気がついた点があった。

この記事へのコメント

この記事へのトラックバック