HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0712
kaienRPGみたいな名前設定画面7未解決


kaien

リンク

2007/7/12(Thu) 22:07:25|NO.9454

どうもこんばんは、kaienです。
今日も教えて欲しいことがあります。お願いします。

よく、RPGなどであるキャラの名前を設定するときなど
あいうえお かきくけこ さしすせそ たちつ・・・・・
と画面に五十音が並べられていて一文字ずつ入力していく画面がありますよね。
そういうものを作りたいんです。

ヒントなど教えていただければと思います。



この記事に返信する


へべれけ

リンク

2007/7/12(Thu) 22:41:06|NO.9455

まず、画像をひとつ表示できるプログラム作って
次にその画像をマウスでクリックしたら、「A」という文字が表示されるようにして
その次に、画像を2つに増やして、「A」「B」という文字に対応させて、、、、
ちびちびと、がんばっていけばできますよ



Drip

リンク

2007/7/13(Fri) 07:17:33|NO.9463

Dripです。

 kaienさん、こんにちは。
RPGゲームで見かける名前入力画面の作成ですが、
kaienさんの名前入力画面のプログラムはどこまで作成されていらっしゃいますか?
ただ漠然と作り方がわからないと質問されていらっしゃるのでしたら、
少し自分で考えてみてください。
(というのも、質問の内容があまりに根本的すぎるため、
 名前入力画面の土台となるプログラムを自分で築くことができないと、
 これはとりあえずできたけど、じゃああれはどう作ったら良いのだろう?
 これもあれもわからない。また質問しよう‥というハメになるからです。)

 以下に名前入力画面を作成する汎用性に乏しいサンプルを示します。
方法は色々あるので学習の参考にしてみて下さい。

w="" repeat stick ky if ky=1:cur-- //カーソルキーで移動します。 if ky=2:cur-=5 if ky=4:cur++ if ky=8:cur+=5 cur=limit(cur,0,9) redraw 0 color 255,255,255:boxf:color //背景をクリアします。 p=0 repeat 2:y=cnt repeat 5:x=cnt pos x*40+30,y*40+20:poke w,0,p+65:mes w //文字を描画してから if cur=p & mc\10<7:pos x*40+30-20,y*40+20:mes "≫" //カーソルを描画します。 p++ loop loop redraw 1:await 30:mc++ loop



kaien

リンク

2007/7/13(Fri) 14:00:01|NO.9464

へべれけさん、Dripさん返信ありがとうございます。

>kaienさんの名前入力画面のプログラムはどこまで作成されていらっしゃいますか?
>ただ漠然と作り方がわからないと質問されていらっしゃるのでしたら、
>少し自分で考えてみてください。

Dripさんのものとは少し違いますがのあいうえおが並んでいて
カーソルが動くものは作りました。

>(というのも、質問の内容があまりに根本的すぎるため、
>名前入力画面の土台となるプログラムを自分で築くことができないと、
>これはとりあえずできたけど、じゃああれはどう作ったら良いのだろう?
>これもあれもわからない。また質問しよう‥というハメになるからです。)

わかりました。ならないように自分でもっともっと考えてみます。

あとはスペースキーを押したら入力できるようにしてみます。



kaien

リンク

2007/7/15(Sun) 21:26:59|NO.9533

どうも、kaienです。連レスすいません。
要領は悪いながらも無理やり土台らしいものは作りました。
ですがスペースキーを押して入力するところでつまりました。

僕の頭のボキャブラリーでは矢印のカレントポジションのX,Y座標を
ifで指定してその位置でスペースキーを押すと入力されるという方法しか
思いつきませんでした。
(説明がわからないといけないので例)

if key=16 and tate=10 and yo=10 : mes "あ" if key=16 and tate=10 and yo=20 : mes "い" ;<以下省略>

でもそれをすると五十音全部のカレントポジションを指定
しなければならないので数が膨大になってしまいます。

何か違うやり方や数を減少させられる方法を知っている方、お願いします。



Drip

リンク

2007/7/16(Mon) 01:48:54|NO.9539

こんにちは。

 repeat - loop文を使用されたことはありますか?
repeat - loop文を使用することで、手動でやるととても面倒な均等配置も
自動的に処理できるようになります。私が上で上げたサンプルがまさにそのものだったのですが‥
参考にされなかったのでしょうか。
 以下に再度、名前入力プログラムのサンプルを示します。
参考に 学習 してみてください。

name="" //名前 w="" //1文字代入用変数 cur=0 //現在のカーソル位置 repeat stick ky if ky=1:cur-- //カーソルの移動 if ky=2:cur-=8 if ky=4:cur++ if ky=8:cur+=8 cur=limit(cur,0,43) //カーソルの上限設定 redraw 0:color 255,255,255:boxf:color //背景クリア pos 20,10:mes "アローキーで移動し、スペースキーで入力・決定" repeat 44 //文字を適当に44個配置 pos cnt\8*30+100,cnt/8*30+100 //文字を表示させる位置を計算 if cnt=43:{ mes "決定" //最後に決定を配置 }else{ poke w,0,cnt+48:mes w //変数wに1文字入れて描画する } if cur=cnt:{ //現在描画した文字にカーソルが当てられていたら if mc\10<5:pos ginfo_cx-10,ginfo_cy-18:mes ">" //カーソル描画 if ky=16:if cur<43:name+=w:else:dialog "あなたの名前は\n"+name //入力・決定 } loop pos 160,50:if mc\10<5:mes "名前:"+name+"*":else:mes "名前:"+name //名前表示 redraw 1:await 30:mc++ //画面更新とアイドルとメインカウンタ上昇 loop
 また、HSP付属マニュアルの「HSP3文字列のひみつ(中級者向け) (hsp3str.htm) 」を
一度お読みいただく事をお勧めします。
文字列の扱い方により理解を深める事ができると思います。



eller

リンク

2007/7/16(Mon) 06:12:46|NO.9541

kaienさんはじめまして、ellerと申します。
Dripさんが実装方法についてスクリプトを挙げて細かく説明してくださっているので、私からは50音を扱う上でのアドバイスをさせていただきます。参考になればうれしいです。

「HSP3文字列のひみつ」に目を通していただければわかりますが、半角アルファベットの文字コードは規則的に並んでいるのでループで簡単に扱うことができます。

repeat 26 mes strf("%c", 'A' + cnt) loop
しかし全角ひらがな・カタカナの並び方はあまり規則的ではないため、こうした扱いが難しくなってしまいます。
規則性を調べてifやcaseで場合分けをすることも可能だと思いますが、文字列型配列変数を利用するのが一番簡単です。

s(0) = "あ","い","う","え","お" s(5) = "か","き","く","け","こ" s(10) = "さ","し","す","せ","そ" foreach s mes s(cnt) loop
配列の容易に手間はかかりますが、試してみてください。



kaien

リンク

2007/7/16(Mon) 12:58:12|NO.9543

Dripさん、ellerさん返信ありがとうございます。

>repeat - loop文を使用することで、手動でやるととても面倒な均等配置も
>自動的に処理できるようになります。私が上で上げたサンプルがまさにそのものだったのですが‥
参考にされなかったのでしょうか。

あのサンプルは均等配置を説明されているものなんですね。
僕は、なんでABCD・・・が書かれていないのに描画されているんだろう?とそこばかり気にしていました。

「HSP3文字列のひみつ」を読んで文字列に少し理解は深まりました。
サンプルを参考に勉強させていただきます。

>kaienさんはじめまして、ellerと申します。
初めまして、今後ともよろしくお願いします。

>しかし全角ひらがな・カタカナの並び方はあまり規則的ではないため、こうした扱いが難しくなってしまいます。
はい、二文字で一個と、僕にとっては難しいです。

>規則性を調べてifやcaseで場合分けをすることも可能だと思いますが、文字列型配列変数を利用するのが一番簡単です。
>配列の用意(←修正)に手間はかかりますが、試してみてください。

今はよくわかりませんが勉強したいと思います。



ONION software Copyright 1997-2023(c) All rights reserved.