Advertisement
12Me21

talk

May 23rd, 2019
425
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.43 KB | None | 0 0
  1. '======================
  2. ' 会話ゲーム for PETC4
  3. '======================
  4.  
  5. ' 主語, 名詞, 動詞, 形容詞, 形容動詞
  6. ENUM #IDSYUGO=0,#IDMESI,#IDDOSI,#IDKEI,#IDKEDO, #IDEND
  7. CONST #BUFSIZE=256*256
  8.  
  9. DIM IDMAX[#IDEND]
  10. DIM ID[#IDEND]
  11. DIM BUFF[#BUFSIZE]
  12.  
  13. RANDOMIZE 0:RANDOMIZE 1:RANDOMIZE 2
  14.  
  15. '---- 画面描画
  16. ACLS:TLAYER #TCONSOLE,1:SPLAYER #GSPRITE,2:SPLAYER 0
  17.  
  18. ' 背景
  19. CONST #GRW=400,#GRH=240
  20. J=191-80
  21. FOR I=0 TO #GRW-1
  22. C=(FLOOR(I/8) MOD 2)*16+64
  23. GLINE I,0,I,J,RGB(0,0,C)
  24. GLINE I,J,I,151,RGB(128-C,128-C,0)
  25. GLINE I,160,I,#GRH,RGB(0,C,0)
  26. NEXT
  27.  
  28. TX=1
  29. TY=21
  30. TW=48
  31. TH=7
  32. FOR I=0 TO 7 STEP 2
  33. GBOX 0+I,158+I,(#GRW-1)-I,(#GRH-1)-I,RGB(255,255,0)
  34. NEXT
  35.  
  36. ' 木
  37. FOR Z=0 TO 3
  38. TXCOLOR 4
  39. RESTORE @WOOD
  40. PRTDAT 14-Z*4,3,0
  41. PRTDAT 34+Z*4,3,0
  42. NEXT
  43.  
  44. ' 人
  45. AAX=23:AAY=7
  46. ABX=AAX+2:ABY=11
  47. AAMAX=2:AACOL= 9:DIM ANIA$[AAMAX]=[" "," "]
  48. ABMAX=3:ABCOL=11:DIM ANIB$[ABMAX]=["","",""]
  49. TXCOLOR 15
  50. RESTORE @HITO
  51. PRTDAT AAX-4,1,1
  52. TXCOLOR AACOL:LOCATE AAX,AAY:PRINT ANIA$[0]
  53. TXCOLOR ABCOL:LOCATE ABX,ABY:PRINT ANIB$[1]
  54.  
  55. ' ロゴ
  56. SPSET 0,4095
  57. SPOFS 0,340,24,-32
  58.  
  59.  
  60. '--- 単語インデックス作成
  61. CMTMAX=0
  62. LOGPTR=1
  63. MAKEIDX
  64.  
  65. '--- 開始
  66. BGMPLAY 0,17,10
  67. GPUTSTR "かいわゲーム":BEEP 37
  68. R=HITANY()
  69. BEEP 3:WAIT 30
  70.  
  71. TMREAD OUT HOUR,MIN,SEC
  72. IF HOUR<10 THEN HANASU "おはようございます"
  73. IF HOUR>=10 AND HOUR<19 THEN HANASU "こんにちは"
  74. IF HOUR>=19 THEN HANASU "こんばんわ"
  75. WAIT 30
  76. HANASU "で、いつでもしゅうりょうできます。"
  77. WAIT 60
  78.  
  79. '--- メインループ
  80. LOOP
  81. IF RND(0,10)==0 THEN
  82. GOSUB @COMENT
  83. CONTINUE
  84. ENDIF
  85.  
  86. IF RND(0,10)==0 THEN
  87. GOSUB @URANAI
  88. CONTINUE
  89. ENDIF
  90.  
  91. '--- 質問モード
  92. ON RND(0,4) GOSUB @BUNPO1,@BUNPO2,@BUNPO3,@BUNPO4
  93. LOOP
  94. LOOP
  95. HANASU A$
  96. ANS=YESNO()
  97. IF ANS==0 THEN GOSUB @SYURYO:CONTINUE
  98. BREAK
  99. ENDLOOP
  100. IF ANS==1 THEN LOGING OK$:BREAK
  101. IF ANS==2 THEN LOGING NG$:BREAK
  102. ENDLOOP
  103. ENDLOOP
  104.  
  105. '--- コメントモード
  106. @COMENT
  107. RESTORE @CMTDAT
  108. NUM=RND(2,CMTMAX-1)
  109. FOR I=0 TO NUM
  110. READ A$
  111. NEXT
  112. HANASU A$
  113. IF HITANY() AND 64 THEN GOSUB @SYURYO
  114. RETURN
  115.  
  116. '--- 占いモード
  117. @URANAI
  118. R$=MESIGET()
  119. HANASU "あなたのラッキーアイテムは、"+R$+" です。":WAIT 30
  120. IF RND(0,10)>5 THEN WAIT 30:HANASU "なんちゃって":WAIT 20
  121. IF HITANY() AND 64 THEN GOSUB @SYURYO
  122. RETURN
  123.  
  124. '---
  125. @BUNPO1
  126. A1$=MESIGET()
  127. A2$=RDDAT(#IDKEI) '形容詞
  128. A$=A1$+" は "+A2$+" ですか"
  129. OK$=A2$+" "+A1$
  130. NG$=LEFT$(A2$,LEN(A2$)-1)+"くない "+A1$
  131. RETURN
  132.  
  133. '---
  134. @BUNPO2
  135. A1$=MESIGET()
  136. A2$=RDDAT(#IDDOSI) '動詞
  137. A$=A1$+" を "+A2$+"こと は ありますか"
  138. OK$=A2$+" "+A1$
  139. NG$=A2$+"ことがない "+A1$
  140. RETURN
  141.  
  142. '---
  143. @BUNPO3
  144. A1$=MESIGET()
  145. A2$=RDDAT(#IDKEDO) '形容動詞
  146. A$=A1$+" は "+A2$+" ですか"
  147. OK$=A2$+" な "+A1$
  148. NG$=A2$+"でない"+A1$
  149. RETURN
  150.  
  151. '---
  152. @BUNPO4
  153. A1$=MESIGET()
  154. A$=A1$+" は すきですか"
  155. OK$="あなた の すきな "+A1$
  156. NG$="あなた の きらいな "+A1$
  157. RETURN
  158.  
  159. '--- 終了
  160. @SYURYO
  161. HANASU "しゅうりょうしますか"
  162. IF YESNO()==1 THEN
  163. BGMSTOP 0,3
  164. HANASU "おつきあいいただき、まことにありがとうございました。"
  165. WAIT 20
  166. HANASU "さようなら"
  167. WAIT 60
  168. ACLS:END
  169. ENDIF
  170. HANASU "つづけます"
  171. RETURN
  172.  
  173.  
  174. '--- ログに記録
  175. DEF LOGING P$
  176. VAR I,C
  177. FOR I=0 TO LEN(P$)
  178. C=0
  179. IF I<LEN(P$) THEN C=ASC(MID$(P$,I,1))
  180. BUFF[LOGPTR]=C
  181. LOGPTR=(LOGPTR+1) MOD #BUFSIZE
  182. NEXT
  183. END
  184.  
  185. '--- ログから取り出し
  186. DEF LOGGET()
  187. VAR R$,I,C,LOGPTR2
  188. R$="":I=0
  189. LOOP
  190. LOOP
  191. LOGPTR2=RND(0,#BUFSIZE)
  192. C=BUFF[LOGPTR2]
  193. LOGPTR2=(LOGPTR2+1) MOD #BUFSIZE
  194. IF C==0 THEN BREAK
  195. ENDLOOP
  196. LOOP
  197. C=BUFF[LOGPTR2]
  198. LOGPTR2=(LOGPTR2+1) MOD #BUFSIZE
  199. IF C==0 THEN BREAK
  200. R$=R$+CHR$(C)
  201. ENDLOOP
  202. IF R$!="" THEN BREAK
  203. I=I+1
  204. IF I>=1200 THEN BREAK
  205. ENDLOOP
  206. RETURN R$
  207. END
  208.  
  209.  
  210. '--- インデックス作成
  211. DEF MAKEIDX
  212. VAR IDX,J,R$
  213. RESTORE @KOTOBA
  214. IDX=0
  215. FOR J=#IDSYUGO TO #IDEND-1
  216. ID[J]=IDX
  217. FOR I=0 TO 999
  218. READ R$
  219. IDX=IDX+1
  220. IF R$=="" THEN BREAK
  221. NEXT
  222. IDMAX[J]=I
  223. NEXT
  224.  
  225. RESTORE @CMTDAT
  226. FOR CMTMAX=0 TO 999
  227. READ R$
  228. IF R$=="" THEN BREAK
  229. NEXT
  230. END
  231.  
  232. '--- ランダム読み込み
  233. DEF RDDAT(IDN)
  234. VAR R$,I,NUM
  235. R$=""
  236. NUM=ID[IDN]+RND(0,IDMAX[IDN])
  237. RESTORE @KOTOBA
  238. FOR I=0 TO NUM
  239. READ R$
  240. NEXT
  241. RETURN R$
  242. END
  243.  
  244. '--- 名詞取り出し
  245. DEF MESIGET()
  246. VAR R$
  247. IF RND(0,7)!=0 THEN
  248. R$=LOGGET()
  249. IF LEN(R$)<=22 AND R$!="" THEN RETURN R$
  250. ENDIF
  251. RETURN RDDAT(#IDMESI)
  252. END
  253.  
  254.  
  255. '--- 話す
  256. DEF HANASU TK$
  257. VAR T$,P,I
  258. T$=TK$
  259. LOOP
  260. P=INSTR(T$," は ")
  261. IF P==-1 THEN BREAK
  262. T$=SUBST$(T$,P,3," わ ")
  263. ENDLOOP
  264. LOOP
  265. I=INSTR(T$," ")
  266. IF I==-1 THEN BREAK
  267. T$=LEFT$(T$,I)+MID$(T$,I+1,999)
  268. ENDLOOP
  269. LOOP
  270. I=INSTR(T$,"")
  271. IF I==-1 THEN BREAK
  272. T$=LEFT$(T$,I)+"エックスボタン"+MID$(T$,I+1,999)
  273. ENDLOOP
  274. GPUTSTR TK$
  275. TALK "@I"+T$
  276. ANIME TK$
  277. WHILE TALKCHK():WAIT:WEND:WAIT 10
  278. END
  279.  
  280. '--- 顔アニメ
  281. DEF ANIME T$
  282. VAR I
  283. FOR I=1 TO LEN(T$)
  284. TXCOLOR AACOL:LOCATE AAX,AAY:PRINT ANIA$[RND(1,AAMAX)]
  285. TXCOLOR ABCOL:LOCATE ABX,ABY:PRINT ANIB$[RND(1,ABMAX)]
  286. WAIT 6
  287. NEXT
  288. TXCOLOR ABCOL:LOCATE ABX,ABY:PRINT ANIB$[2]
  289. END
  290. DEF ANIME2
  291. IF RND(1,30) THEN RETURN
  292. TXCOLOR AACOL:LOCATE AAX,AAY:PRINT ANIA$[RND(1,AAMAX)]
  293. END
  294.  
  295.  
  296. '--- ボタン入力
  297. DEF BTRIG(m)
  298. VAR I,R
  299. I=BUTTON(0,-1,m)
  300. IF I AND (1<<#B_LUP ) THEN R=R OR 1
  301. IF I AND (1<<#B_LDOWN ) THEN R=R OR 2
  302. IF I AND (1<<#B_LLEFT ) THEN R=R OR 4
  303. IF I AND (1<<#B_LRIGHT) THEN R=R OR 8
  304. IF I AND (1<<#B_RRIGHT) THEN R=R OR 16 'A
  305. IF I AND (1<<#B_RDOWN ) THEN R=R OR 32 'B
  306. IF I AND (1<<#B_RUP ) THEN R=R OR 64 'X
  307. RETURN R
  308. END
  309.  
  310. '--- ボタン離す
  311. DEF KEYOFF
  312. WHILE BTRIG(0)!=0:WAIT:WEND
  313. END
  314.  
  315. '--- ボタン入力待ち
  316. DEF HITANY()
  317. VAR BT
  318. KEYOFF
  319. TXCOLOR 11
  320. PRTB "PUSH ANY BUTTON"
  321. LOOP
  322. VSYNC 2
  323. ANIME2
  324. BT=BTRIG(0)
  325. IF BT AND (16+32+64) THEN BREAK
  326. ENDLOOP
  327. BEEP 9
  328. PRTB " "*23
  329. RETURN BT
  330. END
  331.  
  332. '--- YES/NO入力
  333. DEF YESNO()
  334. VAR BT,R
  335. KEYOFF
  336. TXCOLOR 7
  337. PRTB "=YES / =NO"
  338. R=0
  339. LOOP
  340. VSYNC 2
  341. BT=BTRIG(0)
  342. IF BT AND 32 THEN R=2:BREAK
  343. IF BT AND 16 THEN R=1:BREAK
  344. IF BT AND 64 THEN BREAK
  345. ANIME2
  346. ENDLOOP
  347. PRTB " "*48
  348. IF R!=0 THEN
  349. IF R==1 THEN BEEP 7:TXCOLOR 11:PRTB "YES"
  350. IF R==2 THEN BEEP 13:TXCOLOR 13:PRTB "NO"
  351. WAIT 30
  352. PRTB " "*48
  353. ENDIF
  354. RETURN R
  355. END
  356.  
  357.  
  358. '--- テキストカラー
  359. DEF TXCOLOR N
  360. VAR R,G,B,I
  361. I=128+((N AND 1)*127)
  362. R=0:IF (N AND 2) THEN R=I
  363. G=0:IF (N AND 4) THEN G=I
  364. B=0:IF (N AND 8) THEN B=I
  365. CASE N
  366. WHEN 0: COLOR RGB(255,255,255)
  367. WHEN 1: COLOR RGB(0,0,0)
  368. OTHERWISE: COLOR RGB(R,G,B)
  369. ENDCASE
  370. END
  371.  
  372. '--- 文字表示
  373. DEF PRTB T$
  374. LOCATE 25-LEN(T$)/2,28
  375. PRINT T$;
  376. END
  377.  
  378. '--- 拡大文字表示
  379. DEF GPUTSTR T$
  380. VAR X,Y,PTR,CH$
  381. X=TX
  382. Y=TY+TH-1
  383. FOR PTR=0 TO LEN(T$)-1
  384. CH$=MID$(T$,PTR,1)
  385. LOCATE X,Y
  386. PRINT CH$
  387. 'GPUTCHR X+1,Y+1,"BGF0",NUM,14,SZ
  388. 'GPUTCHR X ,Y ,"BGF0",NUM, 0,SZ
  389. 'X=X+SZW
  390. 'IF X>255 THEN KAIGYO
  391. X=X+1
  392. IF X>=(TX+TW-1) THEN KAIGYO:X=TX
  393. NEXT
  394. KAIGYO:KAIGYO
  395. END
  396.  
  397. '--- 改行
  398. DEF KAIGYO
  399. VAR IX,IY,T$
  400. TXCOLOR 15
  401. FOR IY=0 TO TH-1
  402. FOR IX=0 TO TW-1
  403. LOCATE TX+IX,TY+IY
  404. T$=CHR$(CHKCHR(TX+IX,TY+IY+1))
  405. IF IY==(TH-1) THEN T$=" "
  406. PRINT T$
  407. NEXT
  408. NEXT
  409. VSYNC 8
  410. END
  411.  
  412. '--- 背景テキストデータ表示
  413. DEF PRTDAT LX,LY,MODE
  414. VAR I,J,T$,U$
  415. FOR I=0 TO 999
  416. READ T$
  417. IF T$=="" THEN BREAK
  418. FOR J=0 TO LEN(T$)-1
  419. U$=MID$(T$,J,1)
  420. LOCATE LX+J,LY+I
  421. IF U$!=" " OR MODE THEN PRINT U$;
  422. NEXT
  423. NEXT
  424. END
  425.  
  426.  
  427. '--- 表示データ
  428. @WOOD
  429. DATA "  "
  430. DATA "  "
  431. DATA "  "
  432. DATA "  "
  433. DATA "  "
  434. DATA " "
  435. DATA "  "
  436. DATA "  "
  437. DATA "  "
  438. DATA "  "
  439. DATA "  "
  440. DATA ""
  441.  
  442. DATA "  "
  443. DATA "  "
  444. DATA "  "
  445. DATA "  "
  446. DATA "  "
  447. DATA "  "
  448. DATA " "
  449. DATA "  "
  450. DATA "  "
  451. DATA "  "
  452. DATA "  "
  453. DATA ""
  454.  
  455. @HITO
  456. DATA "   "
  457. DATA "   "
  458. DATA "  "
  459. DATA "  "
  460. DATA "     "
  461. DATA "     "
  462. DATA "   "
  463. DATA "    "
  464. DATA "    "
  465. DATA "   "
  466. DATA "    "
  467. DATA "     "
  468. DATA "  "
  469. DATA " "
  470. DATA " "
  471. DATA " "
  472. DATA " "
  473. DATA " "
  474. DATA ""
  475.  
  476.  
  477. '--- 会話データ
  478. @CMTDAT
  479. DATA "このプログラムは、わたしがランダムにしゃべっています。"
  480. DATA "かいわのけっかは、ないぶにきろくしています。"
  481. DATA "プログラムをとめると、かいわのきろくは、きえてしまいます。"
  482. DATA "このプログラムは、いつでもしゅうりょうできます。"
  483. DATA "こまったことに、このプログラムは、おわりがありません。"
  484. DATA "このプログラムは、トークめいれいをつかってしゃべっています。"
  485. DATA "わたしは、あたらしいたんごをおぼえることは、できません。"
  486. DATA "たまにへんなことをしゃべりますが、おおめにみてください。"
  487. DATA "かなばかりで、よみにくくてすみません。"
  488. DATA "このプログラムは、ジョークソフトです。"
  489. DATA ""
  490.  
  491. @KOTOBA
  492. '--- 主語
  493. DATA "わたし"
  494. DATA "あなた"
  495. DATA ""
  496.  
  497. '--- 名詞
  498. DATA "ゲーム","プチコン","おんがく","どうろ"
  499. DATA "まち","えき","いす","つくえ","ドア"
  500. DATA "マンガ","えいが","しょうせつ"
  501. DATA "ちきゅう","うみ","そうげん","さばく"
  502. DATA "インターネット","ケーブル","トランジスタ"
  503. DATA "じんこうちのう","たっきゅう","サッカー","やきゅう"
  504. DATA "クルマ","バイク","じてんしゃ"
  505. DATA "おちゃ","コーヒー","ジュース"
  506. DATA "じどうしゃ","トラック","バーコード","しゃしん"
  507. DATA "けいたいでんわ","スプーン","ねったいぎょ"
  508. DATA "とし","うた","ワリバシ","てがみ"
  509. DATA "ガラス","でんしゃ","メガネ","ほん"
  510. DATA "でんかせいひん","テレビ","エアコン","そうじき"
  511. DATA "せんたくき","パソコン","プリンタ","けいこうとう"
  512. DATA "でんき","ほんだな","ライト","カメラ"
  513. DATA "コンビニ","いえ","ビル","おたま","おかね"
  514. DATA "でんき","にく","ぬか","ねんど","イヌ","ネコ"
  515. DATA "ぜいきん","なっとう","にんじん","ねんがじょう"
  516. DATA "ぶんぼうぐ","ヤンバルクイナ","タンチョウヅル"
  517. DATA "エンピツ","ボールペン","はさみ","けしゴム"
  518. DATA "かみ","ナイフ","ノート","ソーメン","ケーキ"
  519. DATA "たべもの","ごはん","タコヤキ","タイヤキ","パン"
  520. DATA "おかし","チョコレート","ラーメン","すきやき"
  521. DATA "やさい","モヤシ","ピーマン","せんめんき"
  522. DATA "ダイコン","ニンジン","ちくわ","こんぶ"
  523. DATA "ミカン","スイカ","リンゴ","カキ"
  524. DATA "エレベータ","エスカレータ","かいだん"
  525. DATA "ガラス","コンクリート","きん","てつ"
  526. DATA "ギョウザ","クジラ","しめサバ","おにぎり"
  527. DATA "うちゅう","はくさい","マネキン","マンドリル"
  528. DATA "コーヒー","みず","コップ","ロウソク"
  529. DATA "さとう","しお","コショウ","しょうゆ"
  530. DATA "ゾウ","キリン","オオカミ","イルカ","さる"
  531. DATA "えいが","メモようし","シシャモ","サンマ"
  532. DATA ""
  533.  
  534. '--- 動詞
  535. DATA "あそぶ","そそぐ"
  536. DATA "たたく","のばす"
  537. DATA "おぼえる","たずねる"
  538. DATA "わる","きる"
  539. DATA "とる","ねむる"
  540. DATA "つかう","むすぶ"
  541. DATA "かう","うる"
  542. DATA "うちこむ","とりかえる"
  543. DATA "うつ","あてる"
  544. DATA "うごかす"
  545. DATA "つなぐ","きそう"
  546. DATA "でる","まもる"
  547. DATA "とめる","あるく"
  548. DATA "はしる","おくる"
  549. DATA "はる","めざす"
  550. DATA "ひろう","おとす"
  551. DATA "みる","きく","はなす"
  552. DATA "なおす","しめす"
  553. DATA "つけたす","とりはずす"
  554. DATA ""
  555.  
  556. '--- 形容詞
  557. DATA "かたい","やわらかい"
  558. DATA "たかい","ひくい"
  559. DATA "あつい","さむい"
  560. DATA "あたたかい","つめたい"
  561. DATA "おもい","かるい"
  562. DATA "とおい","ちかい"
  563. DATA "しかくい","ここちよい"
  564. DATA "まるい","もろい"
  565. DATA "きたない","はかない"
  566. DATA "おもしろい","きょうみぶかい"
  567. DATA "つまらない","たのしい"
  568. DATA "あかるい","くらい"
  569. DATA "はやい","おそい"
  570. DATA "こまかい","めずらしい"
  571. DATA "あたらしい","ふるい"
  572. DATA "ありがたい","うるさい"
  573. DATA "たのもしい"
  574. DATA ""
  575.  
  576. '--- 形容動詞
  577. DATA "きれい","しんせつ","はなやか"
  578. DATA "すき","きらい","びんぼう"
  579. DATA "いっしょ","おだやか","ふしぎ"
  580. DATA "けんこう","かんたん","しぜん"
  581. DATA "しずか","げんき","ふしぜん"
  582. DATA "せいかく","さいこう"
  583. DATA "カラフル","とうめい"
  584. DATA ""
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement