Hermes TrisClistos 2021/07/12 23:17

forループを活用して「風俗の予約システム」をつくる(途中) / デリヘル純愛ゲーム(仮)制作日誌

目指すシステム要件が「登場するデリヘル嬢が数十~100人でも耐えられるもの」であることを踏まえれば、スクリプトのベタ打ちではなく、データ量の変更にも対応できる柔軟なシステムが必要です。

と、いうことで、嬢や何百人でも、デリヘル店やホテルが何十軒であっても対応できるように、forループ文で予約システムを構築しなければなりません。

……手こずっていました。どうにか形にできたので途中経過を報告しておきます。

▼まずは動画をご覧ください

デリヘル店に電話して、このあとのプレイ予約をしているところです。今回の『デリヘル純愛ゲーム(仮)』の根幹をなすシステムのひとつ。

はじめ、ティラノスクリプトの[iscript]タグ内にて、JavaScriptのforループで構築しようと考えて、実際に取り組みましたが……TS(ティラノスクリプト)とJSが混在して、うまくループできませんでした。

ということで、まずはティラノスクリプトだけでforループ文っぽいものを作ってみました。

参考にしたのは ティラノスクリプト備忘録20 ループ処理 - ごいしはまぐり このウェブサイトの説明。おかげで助かりました。

;ループ開始[p]

[eval exp="f.cnt=0"]

*loopstart

;ここに処理を入れる
;ループ[emb exp="f.cnt"]回目[p]

[eval exp="selectShop1NamePositionY+=selectItemLineSpacing"]
[eval exp="selecShop1ClickPositionY+=selectItemLineSpacing"]

;ラベル生成
[eval exp="f.arrayShopSelectDone[f.cnt]"]

;ループカウント5の時*loopendへジャンプ
[jump target=*loopend cond="f.cnt==f.arrayShopSelectDoneLength"]

;店名1
[backlay]
[ptext page=back text="&arrayShopName[f.cnt]" layer=0 size=&selectShop1FontSize x=&selectShop1NamePositionX y=&selectShop1NamePositionY color=0xffffff zindex=2]
[trans time=0 layer=0]
[wt]

;クリック部分の指定 1個目の選択ボタン
[locate x=&selecShop1ClickPositionX y=&selecShop1ClickPositionY]
[clickable width=&selecShop1ClickWidth height=&selecShop1ClickHeight border="solid:1px:red" mouseopacity="50" target=&f.arrayShopSelectDone[f.cnt]]

;ループカウント+1する
[eval exp="f.cnt=f.cnt+1"]

;ループ最初に戻る
[jump target=*loopstart]

*loopend
;クリック用のストップタグ。これがないと一覧出力できない。
[s]
ループ終了[p]

このforループは「デリヘル店」(一列目)のもの。あとはコピペして「デリヘル嬢」(2列目)、ラブホ(3列目)を実装すれば、予約システムは完成です。

このforループ部分の以前には、座標情報などを格納するための変数を設定しています。

◆ -- 電話で予約システムの変数 -- 
[iscript]
//「項目1」の名前を格納する変数
selectItem1Name = '店名';
//「項目1」の文字サイズを格納する変数
selectItem1FontSize = 40;
//「項目1」の表示位置Xを格納する変数
selectItem1PositionX = 50;
//「項目1」の表示位置Yを格納する変数
selectItem1PositionY = 135;
//店名を格納する変数
//shopName[0]
//「店名1」の文字サイズを格納する変数
selectShop1FontSize = 30;
//項目同士の間隔
selectItemLineSpacing = 35;
//「店名1」の表示位置Xを格納する変数
selectShop1NamePositionX = selectItem1PositionX;
//「店名1」の表示位置Yを格納する変数
selectShop1NamePositionY = 155;
//「店名1」のクリック部分位置Xを格納する変数
selecShop1ClickPositionX = 48;
//「店名1」のクリック部分位置Xを格納する変数
selecShop1ClickPositionY = 160;
//「店名1」のクリック範囲幅を格納する変数
selecShop1ClickWidth = 300;
//「店名1」のクリック範囲高を格納する変数
selecShop1ClickHeight = 30;
//「店名1」のクリック確定後の画像表示位置Xを格納する変数
selecShop1ClickDonePositionX = 48;
//「店名1」のクリック確定後の画像表示位置Yを格納する変数
selecShop1ClickDonePositionY = 195;

//「項目2」の名前を格納する変数
selectItem2Name = '所属キャスト';
//「嬢の名前」表示位置Xを格納する変数
selectLady1NamePositionX = '1';
//「嬢の名前」表示位置Xを格納する変数
selectLady1NamePositionY = '1';

//「項目」の名前を格納する変数
selectItem1Name = '店名';

項目1 とか selectItem1Name とか、「1」というナンバリングをしていますが、これはプロトタイプでつくった「ティラノスクリプトのベタ打ち」の名残です。
forループを使うならば、 変数名は 抽象的に selectItemName というような感じがわかりやすいのではないでしょうか。あとでリネームします。

ループ処理をほどこすことで、これら変数に「行間の数値」がプラスされて、「デリヘル店Aの名前」を表示するためのX座標・Y座標、「デリヘル店Bの名前」を表示するためのX座標・Y座標……「デリヘル店Zの名前」を表示するためのX座標・Y座標……というふうに、データ数のぶんだけ格納されていき、順番に整然とゲーム画面に出力されるわけです。

ちなみに、ティラノスクリプトでデータベースを使う方法がよくわからないので、各種データはTSの[loadjs]タグをつかって、JSファイルにまとめています。

;デリヘル嬢の情報配列
[loadjs storage="ladyarray.js" ]

C:\TyranoStudio_win_std_v110d\myprojects\test\data\others\ladyarray.js
loadjsタグで呼び出すJSファイルの置き場所は otherフォルダ。デフォルト設定では。

//登場するデリヘル嬢のリスト
//Sグレードのデリヘル嬢 10名まで
defaultLadyName1 = '沙友理';
defaultLadyName2 = '茜';
defaultLadyName3 = 'まみ';

//Aグレードのデリヘル嬢 20名まで
defaultLadyName4 = 'カレン';
defaultLadyName5 = 'まさみ';
defaultLadyName6 = '結衣';

//Bグレードのデリヘル嬢 40名まで
defaultLadyName7 = 'こなた';
defaultLadyName8 = 'かがみ';

arrayLady1 = [defaultLadyName1, 'SS', 3000, 19, 'flesh', 0];
arrayLady2 = [defaultLadyName2, 'A', 2000, 22, 'used', 0];
arrayLady3 = [defaultLadyName3, 'B', 1000, 42, 'used', 0];
arrayLady4 = [defaultLadyName4, 'B', 1000, 42, 'used', 0];
arrayLady5 = [defaultLadyName5, 'B', 1000, 42, 'used', 0];
arrayLady6 = [defaultLadyName6, 'B', 1000, 42, 'used', 0];
arrayLady7 = [defaultLadyName7, 'B', 1000, 42, 'used', 0];
arrayLady8 = [defaultLadyName8, 'B', 1000, 42, 'used', 0];

ちなみに、配列データベースの管理はエクセルでおこなっています。

この話は、いずれそのうちに。

以上です。疲れた。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

限定特典から探す

記事を検索