SHIROのIchigoJam日記

IchigoJamの電子工作とプログラミングをメインに

メンデルの遺伝法則

中学校理科で習う、エンドウマメの「メンデルの遺伝法則」をシミュレートするプログラムです。
Facebookの「プログラミングで学ぶ」教材研究グループ(非公開)に掲載された同様のプログラムが面白かったので、IchigoJamで作ってみました。

  • 起動すると、エンドウマメの親世代P「(AA)[aa]」と、その交配で生まれる子世代F1「(Aa)(Aa)」、その交配で生まれる孫世代F2「(AA)(Aa)(aA)[aa]」が表示されます。
  • 「( )」で囲まれたマメは丸いマメ、「[ ]」で囲まれたマメはしわのマメを表します。
    エンドウマメでは丸いマメの遺伝子「A」が優性、しわのマメの遺伝子「a」が劣性で、優性の「A」を1個でも持つと劣性の「a」の機能は覆い隠されて丸いマメになります。劣性遺伝子が2個そろった「aa」だけがしわのマメになります。
  • 親世代Pの交配「(AA)×[aa]」では、それぞれから1個ずつ遺伝子をもらった子世代F1は全て「(Aa)」となり、丸いマメになります。
    子世代F1の交配「(Aa)×(Aa)」では、それぞれから1個ずつ遺伝子をもらった孫世代F2は、「(AA)(Aa)(aA)[aa]」の4種類が生じ、丸いマメとしわのマメの数は3:1の比率になります。
  • スペースキーを押すと、子世代F1の交配で孫世代F2が1個生まれ、その数が下段に表示されます。スペースキーを何度も押して孫世代F2がたくさん生まれると、丸いマメとしわのマメの数はだんだん3:1の理論値に近づいていきます。

プログラムリストはこちら。

10 '*Mendelian inheritance
20 CLV:CLS
30 SRND TICK()+ANA(2)
40 ?"*P (AA)x[aa]"
50 ?:?
60 WAIT 60
70 ?"*F1 (Aa)x(Aa)"
80 ?:?
90 WAIT 60
100 ?"*F2 (AA) (Aa) (aA) [aa]"
110 GSB 270
120 '@LOOP
130 IF !BTN(SPACE) CONT
140 BEEP
150 M=RND(2)
160 F=RND(2)
170 LC 10+M,4:?CHR$(227)
180 LC 15+F,4:?CHR$(227)
190 WAIT 30
200 D=M*2+F
210 [D]=[D]+1
220 GSB 270
230 WAIT 30
240 LC 10+M,4:?" "
250 LC 15+F,4:?" "
260 GOTO 120
270 '@PRTF2
280 A=0
290 FOR I=0 TO 3
300 LC 5+I*5,7:?[I]
310 A=A+[I]
320 NEXT
330 B=[3]
340 A=A-B
350 LC 9,9:?"(";A;")"
360 LC 19,9:?"[";B;"]"
370 RTN
MixJuiceでもダウンロードできます。
?"MJ GET comich.net/ichigojam/mendel.txt"