• ベストアンサー

このプログラムは何言語?何のプログラム?

このプログラムは何言語?何のプログラム? 手掛かり的な情報は全く無いのです。 10 CLS:CGSET 1,0 20 DEF SPRITE 0,(0,1,0,0,0)= CHR$(1)+CHR$(0)+CHR$(3)+CHR$(2) 30 SPRITE ON 40 FOR X=0 TO 240 50 SPRITE 0,X,120 60 PAUSE 3 70 NEXT

質問者が選んだベストアンサー

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.7

補足: 一応正確を記す為に 20 DEF SPRITE 0,(0,1,0,0,0)=CHR$(1)+CHR$(0)+CHR$(3)+CHR$(2) だと、たてに左右入れ替わった真っ二つ髭親父のスプライトとなります。 ちゃんと表示させると 20 DEF SPRITE 0,(0,1,0,0,0)=CHR$(0)+CHR$(1)+CHR$(2)+CHR$(3) この順番 「上左+上右+下左+下右」に対応していて [0][1] [2][3] が正常表示なら [1][0] [3][2] が質問者様が提示したイメージとなります。

kakibesuto
質問者

お礼

回答ありがとうございます。 大正解です。素晴らしいです。尊敬します。 類似のお兄さんですよね。 0,(0,1,0,1,0)このように1に変えると右向きに表示されますね。 ありがとうございました。

その他の回答 (6)

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.6

たびたびすいません。 やっぱりFamily-BASICでした。 V3で検証したところ、あらかじめ用意された「某ゲームで有名な髭親父」のスプライトが画面真ん中を左から右へ移動します。

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.5

どうもこれはANo.2さんのHu-BASICが正しいようです。 一般的にはファミコン用のFamily-BASICの方が有名かも MSX-BasicにはCGSETという命令はないので・・・一応MSXで動作確認してみました。 Family-BASICもあるのですがおしいれ深く入っていて出すのが面倒です。

  • tetsumyi
  • ベストアンサー率26% (1858/7095)
回答No.4

私もMSXbasicだと思います。 現在、このプロラムがWindows上でほとんどそのままで動く99Basicがあります。 http://www.sagami.ne.jp/tadaka/99Basic/

kakibesuto
質問者

お礼

回答ありがとうございます。

回答No.3

古いパソコン用Basicによるものですね。 SPRITE というのは、文字の表示機構をグラフィック表示に流用することで、貧弱なハードウエアでそこそこの画像表示(多くは、アクションゲーム用)をこなすものです。 20 DEF SPRITE 0,(0,1,0,0,0)=CHR$(1)+CHR$(0)+CHR$(3)+CHR$(2) ここで、外字定義と同じようなやり方で、ひとまとまり(概ね、画面上の1文字分)の画像パターンを定義しています。 40 FOR X=0 TO 240 50 SPRITE 0,X,120 60 PAUSE 3 70 NEXT このあたりの命令で、画面の左端(0, 120)から右端(240, 120) まで画像を移動させています。 移動させるに当たって、表だって表示されていたものを消す → 新たな位置に表示させる という手間を分でないのがミソですね。 PAUSE は、移動が早くなりすぎないように時間稼ぎをしているものです。

kakibesuto
質問者

お礼

回答ありがとうございます。 これを見ただけでどういう動きをするのか分かるなんてすごいと思います。

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.2

BASIC言語には間違いがないですが、種類はたぶんHuBASICだと思います。 処理は画面の色を変化させているだけかな?

kakibesuto
質問者

お礼

回答ありがとうございます。

  • heyboy
  • ベストアンサー率21% (1852/8729)
回答No.1

大昔の8ビット機のBASIC言語だと思われますが 「SPRITE」から察するにMSXかな?と思われます ちなみにSPRITEとは直訳すると妖精でして たぶん、画面を表示したりキャラクターにして 動かしたりする命令だと思われますけどね、、、。

kakibesuto
質問者

お礼

回答ありがとうございます。

関連するQ&A

  • N88相互Basic for Windows95でのプログラム

    初めて質問いたします。 ただいまN88相互Basic for Windows95というソフトを使用して「1~45の数字をランダムに並べて表示する」というプログラムを作成してみたのですが、どうしても数字が重複してしまうのです。どこが間違っているのか教えてください。 下記に自分の作成したプログラムを記入します。又、より効率のいい書き方があれば教えてください。よろしくお願いしますm(_ _)m 10 cls 20 input "今日は何月";tuki 30 input "何日";niti 40 for a=0 to tuki 50 for b=0 to niti 60 seki=rnd 70 next b 80 next a 90 cls 100 dim x(50) 110 x(0)=0 120 for s=1 to 45 130 x(s)=int(rnd*45) 140 for c=0 to s-1 150 if x(s)=x(c) or x(s)<1 then x(s)=int(rnd*45):goto 150 160 next c 170 if s=10+e then e=e+10:q=q+1 180 locate q*3,s-e:print x(s) 190 next s 一応流れとしましては、 「月と日を入力してランダムさを出す」 ↓ 「1~50のデータ数があるのを定義する」 ↓ 「今決めているデータの数字と今まで決めたデータの数字を比較して一緒か1未満なら決めなおす」 ↓     ↑ 「今までのと比較して、一緒じゃないなら数字を表示して次のデータへ」 という流れにしている予定ですが、どうやっても数字が重なってしまうので改善点があれば教えてください。お願いしますm(_ _)m

  • C言語のプログラムについて

    下記は、何言語かわからないです。 これをC言語にするにはどうすればよいでしょうか。 プログラムは、「ニュートン法を用いて、方程式x^3(xの3乗)-4=0の近似解を求めるプログラム。ただし、実数解と、近似解の誤差は、0.0001以下とする。ここで、この方程式の導関数は、3x^2(3*xの二乗)である。」 100 DEF F(X)=X*X*X-4 110 DEF G(X)=3*X*X 120 INPUT PROMPT "初期値":A 130 LET B=A-F(A)/G(A) 140 IF ABS(A-B)<=.0001 THEN 170 150 LET A=B 160 GOTO 130 170 PRINT "近似解";B 180 END 以上です。 ご回答よろしくお願いいたします。

  • n88basicのプログラムを十進ベーシックに翻訳してください。

    n88basicの次のプログラムを十1進ベーシックではどうなるのか教えてください。 10 cls 20 p=1000 30 for n=1 to 1000:next n 40 p=p-1 50 if p=-1 then end 60 locate 10,10:print p 70 goto 30

  • プログラムの見本を示してください!!

    数学プログラムの授業をしています。:プログラム言語は「Basic」です。 今から問題と、少しやれたものについては、プログラムを記してみました。 問題の最後の 「※」部分が質問したいところです。ない場合は、何もわからないところです。 (1)DIMを用いて 5つの値をキーボードから入力して、そのうち最大の値を表示するプログラム ※90行目以降の「最大値」の表示の仕方がいまいちわかりません。   10:DIM (5) 20:FOR I=0 TO 4 30:INPUT I 40:NEXT I 50:S=0 60:FOR L=0 TO 4 70:S=S+A 80:NEXT L 90:PRINT ??? (2)FOR,NEXT分を使い、 S=2+(2+3)+(2+3+4)+ ........+(2+4+5+6+7+8+9+10) の計算をして Sを表示するプログラムを作りたい。 以上お願いいたします。

  • VBへの変換の仕方 RS232C送信データとチェックサム

    以下のプログラムをVBに変換する仕方を教えてください。 サンプルプログラム 1110 CHKSUM=0 1120 FOR i=1 to LEN(A$)      'A$は送信データ 1130 CHKSUM=CHKSUM+ASC(MID$(A$,i,1) 1140 NEXT i 1150 C$=CHR$((CHKSUM+13) MOD 256) 1160 PRINT #1,A$;CHR$(13);C$; 私のVBプログラムは1110行から1150行まではそのままで CHKSUM=0 FOR i=1 TO LEN(A$) CHKSUM=CHKSUM+ASC(MID$(A$,i,1) NEXT i C$=CHR$((CHKSUM+13) MOD 256) としました。 送信部分を MSComm1.Output =A$ & CHR$(&H13) & C$ としてみましたが 1160行にあるセミコロン ";" はCHR$(&h3B) として送る必要があるのでしょうか? MSComm1.Output =A$ & CHR$(&h3B) & CHR$(&h13) ・・・・・・ また、データとしてA$="I 02"のチェックサムは "リ" となりますが正しいのでしょうか? 以上ご教示ください。

  • BASICからC言語に

    BASICで for I=1 to 5:line input #2,w$:next I line input #2,COMMENT$ と書かれているプログラムをC言語に書き直したいのですがどのようにしたらいいのでしょうか?

  • N88 basicプログラムの質問(ノルム計算)1

    N88 basicプログラムにおいて鉱物のノルム計算ができるようにしたいのですが、プログラムを打ち込んだのですが、うまく動きません。どなたかわかる方がいればご教授頂きたく願います。 かなり長くなりますが、ぜひともお願い致します。 下記、打ち込んだプログラムとなります。 長いので、質問を分けて入力します。 10 ' 20 '***** normative calculation program for clay minerals ***** by T,Igarashi,1983 30 ' 40 OPTION BASE 1 50 CONSOLE 0,25,0,1 60 WIDTH 40,25 70 ' 80 ' 90 DIM A$(22),DMY$(22),AA$(22),B1$(31),M$(8),L$(8) 100 DIM A(8,22),A1(22),A2(22),B(31),B0(8,31),C9(31),TOTAL(2,8) 110 GOSUB *INIT.1 120 ON ERROR GOTO 5000 130 GOSUB *ENTER 140 FOR QQ=1 TO NN 150 GOSUB *INIT.2 160 IF KORF=1 THEN GOSUB *FILE ELSE GOSUB *KEYBOARD 170 GOSUB *STORE 180 GOSUB *CALC 190 GOSUB *OUTPUT 200 NEXT QQ 210 GOSUB *PRINTOUT 220 GOTO 130 230 ' 240 ' 250 ' 260 *INIT.1 270 RESTORE 290 280 FOR I=1 TO 22 : READ AA$(I) : READ A2(I) : NEXT 290 DATA SIO2,60.085,TiO2,79.899,Al2O3,101.961,Fe2O3,159.692,FeO,71.846,MnO,70.937,MgO,40.304,CaO,56.079,Na2O,61.979,K2O,94.195 300 DATA P2O5,141.943,Cl,35.453,SO3,80.57,S,32.6,Cr2O3,151.989,ZrO2,123.218,F,18.99,CO2,44.9,H2O+,18,H2O-,1,Ig.LOSS,1,Others,1 310 RESTORE 330 320 FOR I=1 TO 31 : READ B1$(I) : NEXT 330 DATA Q,C,ad,mi,ab,an,ka,se,ch,gi,mo,pp,dp,al,Z,hl,th,cc,mg,sd,li,mt,he,cm,pr,il,ru,ap,fr,en,ot 340 C9(1)=A2(1) : C9(2)=A2(3) : C9(3)=A2(1)+A2(3) : C9(4)=A2(10)+A2(3)+A2(1)*6 : C9(5)=A2(9)+A2(3)+A2(1)*6 : C9(6)=A2(8)+A2(3)+A2(1)*2 : C9(7)=A2(3)+A2(1)*2+A2(19)*2 350 C9(8)=A2(10)+A2(3)*3+A2(1)*6+A2(19)*2 : C9(9)=A2(7)*5+A2(3)+A2(1)*3+A2(19)*4 : C9(10)=A2(3)+A2(19)*3 : C9(11)=A2(9)*33+A2(3)+A2(7)+A2(1)*4+A2(19)*4 : C9(12)=A2(3)+A2(1)*4+A2(19) 360 C9(13)=A2(3)+A2(19) : C9(14)=A2(10)+A2(3)*3+A2(13)*4+A2(19)*6 : C9(15)=A2(1)+A2(16) : C9(16)=(A2(9)-16)/2+A2(12) : C9(17)=A2(9)+A2(13) : C9(18)=A2(8)+A2(18) : C9(19)=A2(7)+A2(18) : C9(20)=A2(5)+A2(18) 370 C9(21)=A2(4)+A2(19) : C9(22)=A2(4)+A2(5) : C9(23)=A2(4) : C9(24)=A2(5)+A2(15) : C9(25)=A2(5)-16+A2(14)*2 : C9(26)=A2(2)+A2(5) : C9(27)=A2(2) : C9(28)=A2(8)*10+A2(11)*3+A2(19) 380 C9(29)=A2(8)-A2(17)*2 : C9(30)=A2(1)+A2(7) : C9(31)=1 : DD=0 390 FOR I=1 TO 31 : B(I)=0 : NEXT 400 RETURN 410 ' 420 ' 430 ' 440 *ENTER 450 C=0 : KORF=0 : SCREEN 3,3 : CLS 3 : SCREEN 3,0 : LINE(0,0)-(639,199),6,BF : COLOR 2 460 LOCATE 0,5 : PRINT "How many samples (Max 8 samples)";: INPUT NN 470 IF NN>8 THEN CLS 1 : GOTO 460 480 IF NN=0 THEN GOTO *PROEND 490 COLOR 2 : LOCATE 0,8 : PRINT "Input data from Keyboard or File or End : K/F/E" 500 Y$=INKEY$ 510 IF Y$="" THEN 490 520 IF Y$="e" OR Y$="E" THEN GOTO *PROEND 530 IF Y$="k" OR Y$="K" THEN KORF=0 : RETURN 540 IF Y$<>"f" AND Y$<>"F" THEN 490 550 KORF=1 560 RETURN 570 ' 580 ' 590 ' 600 *INIT.2 610 CLS 1 620 FOR I=1 TO 22 : A(QQ,I)=0 : NEXT I 630 FOR I=1 TO 31 : B(I)=0 : B0(QQ,I)=0 : NEXT I 640 RETURN 650 ' 660 ' 670 ' 680 *FILE 690 OPEN "data.1" AS #1 700 FIELD #1,40 AS MINERAL$,40 AS L1$ 710 FOR I=1 TO 22 : FIELD #1,(I-1)*4+80 AS DMY$(I),4 AS A$(I) : NEXT 720 MAX=LOF(1) : IF MAX=0 THEN RETURN 440 730 LOCATE 1,2 : PRINT MAX;"records are filing." 740 IF DD=1 THEN 800 750 LOCATE 2,5 : PRINT "You need list (Y/N)?": Y$=INKEY$ 760 IF Y$"" THEN 750 770 IF Y$="N" OR Y$="n" OR Y$="ミ" THEN 800 780 IF Y$="Y" OR Y$="y" OR Y$="ン" THEN GOSUB *NAME.LIST : GOTO 800 790 GOTO 750 800 LOCATE 2,10 : INPUT "Record No.";N 810 IF N>MAX THEN CLS 1 : GOTO 730 820 GET #1,N 830 M$=MINERAL$ : L$=L1$ 840 FOR I=1 TO 11 : A(QQ,I)=CVS(A$(I)) : A(QQ,I+11)=CVS(A$(I+11)) : NEXT 850 CLOSE #1 : DD=1 860 LOCATE 2,15 : PRINT "Correct data : Y/N"; : Y$=INKEY$ 870 IF Y$="" THEN 860 880 IF Y$="Y" OR Y$="y" THEN C=1 : GOTO 1120 890 IF Y$="N" OR Y$="n" THEN RETURN 180 900 GOTO 860 910 ' 920 ' 930 ' 940 *NAME.LIST 950 LPRINT 960 LPRINT CHR$(27) ; "V0960" ;CHR$(&H8) 970 LPRINT "Sample Name" ; TAB(40); "Locality" 980 LPRINT CHR$(27);"V0960";CHR$(&H8) 990 FOR II=1 TO MAX 1000 GET #1, II 1010 M$=MINERAL$ : L$=L1$ 1020 LPRINT M$; TAB(40); L$ 1030 NEXT 1040 LPRINT CHR$(27) ; "V0960";CHR$(&H8) 1050 LPRINT CHR$(12) 1060 RETURN 1070 ' 1080 ' 1090 ' 1100 *KEYBOARD 1110 M$="" : L$="" : FOR I=1 TO 22 : A(QQ,I)=0 : NEXT I

  • N88互換BASICで変換したが使えません。その1

    昔、NECのPC98でN88BASICを使ってプログラムを起動していましたが、N88互換BASIC for windowsにて変換し、WINDOWSパソコンで使用しようと思い、実行してみたら行番号330のファイルが見つかりませんとエラーが出て困っています。 パソコンと温度計をRS232Cケーブルで接続し、温度データを30秒ごとにパソコンに取り込むというソフトなのですが。昔、会社にいた人が作ったそうです。 プログラムは以下のとおりです。私はBASICのことは全くわかりません。 文字数の都合上、分割して表示します。 1 ' save "B:\BAS\VS_RS232.BAS" 2 ' Program Name:VS_RS232.BAS 30 WIDTH 80,25 :CONSOLE 0,25,0,1 40 DEFINT A-Z:TR.NO=1 50 DIM PV$(30) 60 O$ =":" ' : SET 70 P$ ="." ' . SET 80 Q$ =CHR$(&H22) ' " SET 90 R$ ="," ' , SET 100 SP$ =CHR$(&H20) ' SPACE SET 110 DEF FNF1$(X$,Y$) =MID$(X$,4,2)+MID$(X$,7,2)+MID$(Y$,1,2)+MID$(Y$,4,2)+".DAT" 120 DEF FNF2$(X$,Y,Z) =MID$(X$,Y,2)+STR$(VAL(MID$(X$,Z))) 130 DEF FNF3$(X$,X) =MID$(X$,X,6)

  • プログラムを捜しています

    昔コンピューターが開発された初期にFORTRANという プログラム言語があり、たとえば 1 FOR X=1 TO 5,1 2 Y=X^2+1 3 Print Y と入力すると、Y=X^2+1をX=1から5まで 1飛びに計算して  2, 5, 10, 17, 26 と出力することができました。これに相当する 方法は現在どうすればよいのでしょうか。 教えて下さい。

  • basicプログラムです。

    100 DIM A(5) 110 FOR J=1 TO 5 120 READ A(J)   130 NEXT J   140 FOR I=1 TO 4  150 LET K=I    160 FOR J=I+1 TO 5  170 IF A(J)<A(K) THEN LET k=J  180 NEXT J    190 LET T=A(I)    200 LET A(I)=A(K)   210 LET A(K)=T    220 FOR J=1 TO 5   230 PRINT A(J);   240 NEXT J     250 PRINT      260 NEXT I     270 DATA 5,3,7,2,1,  280 END このようなプログラムがあります。 いろいろ調べたのですがそれぞれの文の意味と 何を求めるプログラムか教えて下さい。 5つの数の組み合わせで小さい数から順番に4個 かなと思ったのですが???