「野球盤」の7セグメントバージョンを作りました。数字が表示できるので、イニングやスコアの管理もIchigoJamがやります(^_^)
プレイ動画はこちら。撮影のためにテストプレイしたら壮絶な試合になりました…。動画が15分あるので注意してください。
ちなみに動画の試合のスコアボードはこんな感じです。延長12回の大熱戦でした。
000 001 021 112 =8
000 010 021 110 =6
遊び方
- 基板上には、塁上のランナーを表す4個のLEDと、投球・数字・文字などを表示する7セグメントLEDがあります。
- 各イニングの開始時に、7セグメントLEDでイニング数、表「∩」/裏「∪」、スコア(先攻−後攻)が表示されます。イニングや得点が10以上の場合は、10の位→1の位の順に表示します。
- 各打者の打席前には、7セグメントLEDにアウトカウント(「o」+数字)が表示されます。
- IchigoJamのボタンを押すとピッチャーが投球します。7セグメントLEDの上から時計回りにLEDが光るので(投げる度に球速が変わります)、下(4番目)のLEDが点いた瞬間にボタンを押して打ってください。打つタイミングによって打率が変わります。ボタンを押すのが遅過ぎたり、ボールが来る前にボタンを押してしまうと、三振になります。
- 7セグメントLEDがルーレット式にピカピカ光った後に止まり、打撃結果が表示されます。三=三振、G=内野ゴロ、F=外野フライ、H=ヒットで、ヒットの後は数字が表示され、1=シングルヒット、2=ツーベース、3=スリーベース、4=ホームランです。
- 三振、内野ゴロ、外野フライの場合、打者はアウトになり、アウトカウントが1つ増えます。7セグメントLEDでアウトカウントを表示します。
- 安打の場合、打者走者および塁上のランナーが進塁します。ヒットは1個、ツーベースは2個、スリーベースは3個、ホームランは4個進塁します。ランナーがホームインすると得点が入り、7セグメントLEDで得点が表示されます。10点以上になると1の位だけ表示します。
- ノーアウトまたは1アウトで外野フライを打つと、打者はアウトになりますが、塁上のランナーはタッチアップで1個進塁します。3塁ランナーがいた場合はホームインして1点入ります。
- ノーアウトまたは1アウトで内野ゴロを打つと、打者はアウトになりますが、塁上のランナーは1個進塁します。3塁ランナーがいた場合はホームインして1点入ります。ただし1塁ランナーがいた場合はダブルプレイとなり、打者と1塁ランナーが共にアウトになります。
- ボタンを押すと次の打者へ進行します。3アウトになるとそのイニングは終了し、次のイニングへ移ります。
- 9回までで勝敗が決まれば試合終了です。9回表終了時に後攻チームがリードしていれば9回裏は無しでX勝利、9回裏攻撃中に後攻チームが逆転するとサヨナラ勝ちになります。9回を終わって同点の場合は延長戦に入り、決着が着くまで行われます。システム上は延長99回まで対応します。コールドゲームはありません。
- 試合終了後は7セグメントLEDで結果スコアが表示されます。7セグメントLEDが消えている時にボタンを押すと、試合開始からリプレイします。
- ピッチャーは時々「消える魔球」を投げます。その時は7セグメントLEDが光らないので、音だけを頼りに打ってください。
基板データ
(8/6 v0.3)抵抗・LEDのパッドを大きくして、はんだ付けしやすくしました。
*この基板ガーバーデータは、CC BYライセンスとします。どうぞご利用ください。
(C) 2018 Shiro Saito (http://d.hatena.ne.jp/shiro0922/)
このファイルをそのままFusion PCBで登録すれば、基板を発注できます。
基板寸法は60×60mmです。
プログラムリスト
スロット0:メインプログラム
1 '*Baseball-0 2 CLV:LET[0],63,6,91,79,102,109,125,39,127,111 3 LET[10],35,28,92,73,61,113,118,64:I=1 4 J=0 5 WAIT60:L=1:GSB32:BEEP20,30:WAIT30:OUT0:WAIT60 6 S=0:O=0:R=0:FORK=21TO24:[K]=0:NEXT 7 N=I:GSB34:OUT[10+J]:WAIT60:OUT0:WAIT60:GSB33 8 OUTR:WAIT60:OUTR+[12]:WAIT60:OUTR+[O]:WAIT60:OUTR:WAIT60:BEEP30,3 9 IF!BTN()CONT 10 W=RND(15)+5:L=RND(10) 11 FORA=1TO3:BEEP10,2:OUTA,L:WAITW:OUTA,0:NEXT 12 IFBTN()B=1:GOTO18 13 OUT4,1:CLT 14 IFTICK()>WB=1:GOTO18 15 IF!BTN()GOTO14 16 T=TICK():FORA=1TO10:Z=13+RND(4):OUTR+[Z]:BEEP20,2:WAIT10:OUT0:NEXT 17 B=7-RND(11+T):IFB<1B=1 18 LRUNFILE()+1,B*10 19 WAIT60 20 IFI>8&&J=1&&[28]<[29]GOTO27 21 IFO<3GOTO8 22 OUT0:WAIT60 23 IFI=9&&J=0&&[28]<[29]GOTO27 24 J=J+1:IFJ=1GOTO5 25 IFI>8&&[28]<>[29]GOTO27 26 I=I+1:GOTO4 27 L=1:GSB32:PLAY"L8GGGL4<C":WAIT90 28 GSB33:OUTR+[19]:CLT 29 IFBTN()RUN 30 IFTICK()<60GOTO29 31 GOTO28 32 FORA=1TO11:OUTA,L:NEXT:RTN 33 N=[28]:GSB34:OUTR+[17]:WAIT60:N=[29]:GSB34:RTN 34 IFN>9OUTR+[N/10]:WAIT60 35 OUTR+[N%10]:WAIT60:RTN
スロット1:打撃結果・走者・スコア処理
1 '*Baseball-1 10 '@K 11 OUTR+[13]:BEEP30,20 12 O=O+1:LRUNFILE()-1,19 20 '@GORO 21 OUTR+[14]:BEEP30,20 22 O=O+1:IF[24]&&O<3[24]=0:O=O+1 23 IFO<3&&R>0C=0:Q=1:GSB83 24 LRUNFILE()-1,19 30 '@FLY 31 OUTR+[15]:BEEP30,20:O=O+1 32 IFO<3&&R>0C=0:Q=1:GSB83 33 LRUNFILE()-1,19 40 '@HIT1 41 C=1:Q=1:GSB81 42 LRUNFILE()-1,19 50 '@HIT2 51 C=1:Q=2:GSB81 52 LRUNFILE()-1,19 60 '@HIT3 61 C=1:Q=3:GSB81 62 LRUNFILE()-1,19 70 '@HR 71 OUTR+[16]:PLAY"L8GECL2<C":WAIT60:C=1:Q=4:GSB82 72 LRUNFILE()-1,19 80 '@RUNSCR 81 OUTR+[16]:BEEP10,20 82 WAIT60:OUTR+[Q] 83 WAIT60:OUTR:WAIT60:GSB101:WAIT40 84 [25]=C:FORK=1TOQ:GSB91:NEXT 85 [21]=0:OUT11,0:GSB@PRTSR:RTN 90 '@R 91 BEEP:FORL=21TO24:[L]=[L+1]:NEXT:[25]=0:[28+J]=[28+J]+[21]:S=S+[21]:GSB101 92 WAIT40:RTN 100 @PRTSR 101 R=0:FORL=21TO24:R=R+[L]:R=R<<1:NEXT:R=R<<6 102 OUTR+[[28+J]%10]:RTN