なんじゃこりゃあ!!

自然科学全般をこよなく愛するブログです。OCNブログ人から引っ越してきています。

新年2021年N88BASICシリーズ「シューティング」

2021年01月02日 | アート・文化
皆さんあけましておめでとうございます<(_ _)>
本年も時々で良いですからこのブログをご鑑賞下さい。
今年は寒い寒波が来て下呂市でも大雪です。
はあ、新年からの仕事雪よけで大変そうです(^^;)
さて、大晦日の夜に家にこもってN88BASICの互換ソフトでシューティングゲームの簡単なプログラムを作成していました、今日ようやく完成で新年の一発目から公開です。
WinXPで動かしてコツコツやっていました。

こんな環境で作りました。
例によってエミュなので実機で動くのか分かりませんが(^^;)
走らせている様子です。
オープニング画面です。
スペースキーで始まります。
カーソルの右左で下の”=”が自分です、
”o”が敵機でスペースキーで弾丸が撃てます。
敵機に自分が当たると右のBoobで何回敵に当たったか数字で出ます。
と言う簡単なシューティングです(^^;)
なんかテキストでしょぼい物ですが・・・。
ソースコードはこうなっています。
-----------------------------------------------------------------------------
10 'N88Basic syutenng game 2021 bytatuakicado(2021)
20 cls:defint a-z dim teki(11),xio(11):ko=0:yii=1
30 gosub 420
40 gosub 150:goto 190
50 A$=inkey$
60 if A$=chr$(&h1C) then x=x+1
70 if A$=chr$(&h1D) then x=x-1
80 if A$=" " then ko=1
90 locate xp,10:print " ";
100 locate x,10:print "=";
110 locate 15,5:print "boob!!",gg
120 xp=x
130 if ko=1 then gosub 280
140 return
150 for xi=1 to 10
160 if int(rnd*3)+1=3 then teki(xi)=1
170 next xi
180 return
190 tim=tim+1:if tim=>10 then tim=0:yii=yii+1
200 if yii=>10 then gosub 370:gosub 150:yii=1:for i=0 to 10:locate i,9:print " ";:next i
210 for xii=1 to 10
220 for xio=1 to 10:locate xio,yii-1:print " ";
230 next xio
240 gosub 50
250 if teki(xii)=1 then xio(xii)=xii:locate xii,yii:print "o";
260 next xii
270 goto 190
280 if yoo=<0 then yoo=10:ko=0
290 yoo=yoo-1:gosub 330
300 locate x,yoo:print ".";
310 locate x,yoo+1:print " ";
320 return
330 for xiio=1 to 10
340 if xio(xiio)=x and yii=yoo and teki(xiio)=1 then locate xio(xiio),yii:print " ";:teki(xiio)=0:goto 150
350 next xiio
360 return
370 for xiio=1 to 10
380 if xio(xiio)=x and teki(xiio)=1 then gg=gg+1
390 next xiio
400 for xiio=1 to 10:xio(xiio)=0:teki(xiio)=0:next xiio
410 return
420 locate 2,5:print" シューテイングゲーム "
430 for i=0 to 10000:next i
440 locate 2,5:print"        "
450 for i=0 to 10000:next i
460 locate 3,7:print " PUSH SPASE !! "
470 in$=inkey$
480 if in$=" " then cls:goto 40 else 420
490 return
--------------------------------------------------------------------------------------------

毎度の事ながらなんて難しい非効率なプログラムを組んでいるのか?と怒られそうなコードですが。
でも皆さんもN88BASICでコード化すると殆ど一緒になると思います。
是非、実機で走らせて下さい。
もしかしてキーコードが違うかもしれません。その時は10キーで数字を振り分けてみてはいかがでしょうか?
今回は久々にプログラム公開でした。
今年はいい年にしたいですね。
まあ人の心がけしだいですが、
どちらさんもお元気で。
そりでは(_ _)


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

F-basicでライフゲーム

2017年12月27日 | アート・文化

皆さんこんにちはtatuakicadoです(´・ω・`)

皆さん今年最後の水曜日です、いかがお過ごしでしょうか?TVも年末番組ばかりでようつべ行っても面白い物も少なくガッカリしていました(;・∀・)

仕事が終わった後はスマートスピーカーのスポテファイと言うサービスで音楽を聴いています。OKグーグルとか言っても変人扱いしてくれる人が少なくなりましたね、きっと認知されてきたのでしょう。

さて、前の記事に今ライフゲームを作っていると書いていましたが、昨日長年の謎が解け昨日F-basicV6.3で完成しました。

F-basicV6.3は昔富士通が出していたプログラムソフトです。今はサポートされていませんがXPとWin7でギリギリ動くそうです(富士通から出ているプログラムパッチをインストールする必要があります)

ライフゲームとはその昔考え出されたゲームと言うかシュミレーションなんですが、いくつかの決まりに沿い動いています。

マス目があります、何もない所は死んだマスです。何かあると生きたマスになります、又今回はテキストで絵がいています。

F-basicはこんなソフトです(右下のセキュリティバルーンはこのXPパソコンはネットで繋がないで動かしているためセキュリティソフトがインストールされていないからです)

ライフゲームは次の世代と言う概念がありどんどんとターンが切り替わっていきます。

ライフゲームの手順は、

生きているマスの周り(3×3の範囲です以下省略)に生きているマスが1つ以下の場合そのマスは次のターンで死滅します。

死んでいるマスの周りに3つ生きているマスがあれば次のターンでそこに生きているマスが誕生します。

生きているマスの周りに生きているマスが4つ以上であるならばそのマスは次のターンで死滅します。

生きているマスの周りに2か3個生きたマスがあれば次のターンも生き残ります。

今回作ったものは端の処理をしていないので(あいまいなので)そこらへんは気を付けてください(;・∀・)オイオイ!!!

コンパイルして動かすと”O"の文字のカーソルが、横には座標が表示されます。

カーソルキーでカーソルが動きます。

スペースキーでそこに生きた生命を置きます、再び生きた生命のある場所でスペースキーを押すと消えてしまいます。

生きたマスは"*"で表しています。

リターンキーで世代が動きます、再びリターンキーを押すと世代が止まります(動く時間と思った方が良いです)

動かしてみるとこんな事になります。

WiKiでも検索すると有名なパターン配置があります、ぜひ試してみて下さい。

私の場合なんで時間がかかったのかと言うと、上から下までマスの状態を調べる時に下の生きたマス目にも影響を与えると言う事がまずいと言う事がようやくわかったのでその処理をしたのを怠った事が分かったので慌てて加えたのです(;^ω^)

ここからはソースコードです、前のN88BASICよりはカット&ペーストで簡単にできます。

勿論簡単なプログラムなので移植も用意に可能です、是非やってみて下さい。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

'Life Game by.tatuakcado(2017) f-basic 6.3
cls:GG=0:MAS=0:XX=1:YY=1:defint A-Z:dim M(2,3*10,3*7)
gosub *PRI
'main
*MAIN
A$=inkey$
locate 33,3:print xx,yy
if GG=1 then gosub *RUP
gosub *FRI
goto *MAIN
*RUP
gosub *SYORI
gosub *PRI
locate 33,2:print " rund=";RU
RU=RU+1
if RU=>999999 then locate 5,5:print "-game over-":end
return
*PRI
for Y=1 to 3*7
for X=1 to 3*10
if M(0,X,Y)=1 then locate X,Y:print "*" else locate X,Y:print " "
next X
next Y
return
*FRI
if A$=chr$(&H0D) and GG=0 then GG=1:return
if A$=chr$(&H0D) and GG=1 then GG=0:return
if A$="" then return
locate XX,YY:print " "
if A$=chr$(&h1C) then XX=XX+1
if A$=chr$(&h1D) then XX=XX-1
if A$=chr$(&h1E) then YY=YY-1
if A$=chr$(&H1F) then YY=YY+1
if A$=chr$(&H20) then if M(0,XX,YY)=1 then M(0,XX,YY)=0 else if M(0,XX,YY)=0 then M(0,XX,YY)=1
gosub *AB:gosub *PRI:locate XX,YY:print"O"
return
*AB
if XX=>(3*10) then XX=(3*10)
if XX=<1 then XX=1
if YY=>(3*7) then YY=(3*7)
if YY=<1 then YY=1
return
*SYORI
gosub *SYORIB
return
*SYORIB
MAS=0:MASA=0:XOI=0:YOI=0
for YYI=0 to (3*7)-3
YOI=YOI+1
for XXI=0 to (3*10)-3
XOI=XOI+1
if M(0,XOI,YOI)=0 then goto *3CUNT
for YYY=-1 to 1
for XXX=-1 to 1
if XXX=0 and YYY=0 then MAS=MAS else if M(0,XOI+XXX,YOI+YYY)=1 then MAS=MAS+1
*YOBI1
next XXX
next YYY
*YOBI2
if MAS=<1 then M(1,XOI,YOI)=0 '過疎による死滅
if MAS=2 then M(1,XOI,YOI)=1 '生存
if MAS=3 then M(1,XOI,YOI)=1 '生存
if MASA=3 then M(1,XOI,YOI)=1 '誕生
if MAS=>4 then M(1,XOI,YOI)=0 '過密による死滅
MAS=0:MASA=0
next XXI
XOI=0
next YYI
for YYYY=0 to 3*7
for XXXX=0 to 3*10
M(0,XXXX,YYYY)=M(1,XXXX,YYYY)
next XXXX
next YYYY
for YYYYY=0 to 3*7
for XXXXX=0 to 3*10
M(1,XXXXX,YYYYY)=0
next XXXXX
next YYYYY
return
*3CUNT
for YYY3=-1 to 1
for XXX3=-1 to 1
if XXX3=0 and YYY3=0 then MASA=MASA else if M(0,XOI+XXX3,YOI+YYY3)=1 then MASA=MASA+1
next XXX3
next YYY3
goto *YOBI2

---------------------------------------------------------------------------------------------------------------------------------------------------------------

以上が内容です。あ、完全に著作権フリーですが、そのまま改造もせずに自分で作ったとか言って何処かで発表しないでくださいね(;'∀')

プログラムに詳しい人から見たら何ていい加減な処理をしているのか?と怒られそうなコードですがまあ、分かりやすい分皆さんでうまくまとめてください・・・と言うか最初から貴方の納得のいくように作り直した方が早いかもしれません(;´・ω・)

最初完成したときはそれはもう嬉しい物でした、アルゴリズムを読んで自分なりに実装化した作業は大変な難関でしたね(;・∀・)

今はBASICは習う人はいないと思いますが、無用の長物とは私は思わないです。むしろプログラム入門で若い人に使いこなしてほしいと思いますね('ω')ノ

BASICの後にC言語をお勧めします。

あの天才プログラマーの前の任天堂社長岩田氏はこのゲームを実装するとしたらどんなコードを書くんでしょうか?存命の時に会えたら聞いてみたかったです。

まあ、C言語でチャチャっと作っちゃいそうですね。そこが凡才の僕と天才プログラマーの違いでしょう( *´艸`)

さて、これで今年のサイエンス系と工作系や旅行系の記事は終わりにしたいと思います。

また31日に書きたいと思います、それでは明日は今年最後の木曜日!

頑張りましょうね、

そりでは<(_ _)>

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

真実を書きます

2013年04月01日 | アート・文化

みなさんこんにちはtatuakiです(^-^v
今回は衝撃な事実を紹介いたします。
今まで黙っていたのですが、これを言うと政府から何かされるかと思い話してこなかったのですが。
それは今までこのブログで否定してきた「宇宙人がUFOに乗ってやってきた」説は、実は事実なのです。
それが証拠に今まで米軍が開発したステルス爆撃機は宇宙人が主に作っているのです。
そればかりでなく、電子レンジやコンピューター、レーダーに至るまで宇宙人の技術です。
それが現実なんです。

ここに証言いたします。

by.tatuakicado

2013年

4月1日←♪

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

銀河鉄道の夜

2011年10月23日 | アート・文化

みなさんこんにちはtatuakiです(^-^v

お元気ですか? 私は元気ですよ。

なんかさっきのOCNポータルサイトで134億年前の光をとらえたという報道がありました。本当だとすればすごいことですね。

もう少しでビックバン以前の所へ届くんですから。

さて、秋の夜空が見られます。夏の大三角形、秋の四辺形、カシオペア、などなど。

金曜日に行ってきたプラネタリュウムで、宮沢健二の銀河鉄道の夜の所がありました。非常に泣けてくる話です。

ぎすぎすした世の中に宮沢健二の作品は響くものがありましたね。

そうそう、ソニーのリーダー持っている人なら、ソニーの電子ブック販売サイトで「銀河鉄道の夜」と検索すると、漫画版の銀河鉄道の夜が出てきます。

500円くらいなので是非ご覧になってはいかがでしょうか。

あの銀河鉄道はいったいどんな人が乗るためのものか?

カンパネルラがいなくなったのはどうしてか?

これが分かる仕組みです。

YouTubeでも予告編が出ているのでダウンロードするだけでも価値はありそうです。

(違法配信なのかな?(^-^;)

それでは、皆さん、明日から仕事再開ですので。

お互い頑張りましょう、それでは。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

春はあけぼの!春はあけぼの!似てるんだけどちょとちがう

2006年09月19日 | アート・文化

ハイ!

  似たもの言葉、煮た物言葉、似てるんだけどチョト違う!(byにほんごであそば)

    春はあけぼの!春はあけぼの!

     はるはサロンシップ!

     晴れれば洗濯物乾く!

     威張る見栄を張る、春はあけぼの!

    春はあけぼの、お相撲さんの名前もあけぼの!

 今日はこれにてひとまずやめとこ!

よし!次はえいごであそぼだ!NHKさんよろしく!(^^;ナニガヨロシクヤネン!!

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする