• ベストアンサー

文字をドラッグし配列にいれたい

zozyの回答

  • ベストアンサー
  • zozy
  • ベストアンサー率60% (20/33)
回答No.5

> str[strIndex]には文字列が入っていますから文字列の後に種類を追加するという形になるのでしょうか? 具体例を書いてなかったのよくなかったです。 まだ未熟故、最善のアドバイスができないことをお許しください。。。 わかりづらくなってて申し訳ない。。。 質問者さんの解釈で正しいです。 例.small,carと入力し、それぞれ,形容詞,品詞であるという意味づけをしたい 例えば、処理の前の前提として フォントサイズは20,一文字の幅は10とする 1)smallを描画する位置をマウスクリックで指定 x=100,y=100の位置でクリック 2)"small"と入力 画面上のx=100,y=100の地点からsmallと描画される このときstr[0]に"small"が入る 3)形容詞ボタンを押す このときstr[0]="small"に",形"が追加され str[0]="small,形"となる。 smallを描画し、配列にも格納できたので要素番号を1個後([1])にする これによって、smallが形容詞であることがひとつの文字列で関連付けられる。 4)同じ手順を繰り返して"car"も入力すると str[0]="small,形",strX[0]=100,strY[0]=100 smallの高さは20,幅は50 str[1]="car,品",strX[1]=150,strY[1]=170 carの高さは20,幅は30 となった。 5)最後にsmallとcarを線で結びましょう GUI上の動作ではsmall~carへマウスドラッグで線をひく まず当たり判定という分かりづらい表現でなくどういった処理を行っているかソースを記述します。(普段ゲーム作ってるのでつい;) たとえば、smallの上にマウスがあるかを判定するために public void mousePressed(MouseEvent e){ //マウスポインタが100,100~120,150の中にあるか判定 if(e.getX()>strX[0]&&e.getX()<strX[0]+str[0].length()*10 &&e.getY()>strY[0]&&e.getY()<strY[0]+20){ //concatは文字列の追加 //StringBufferのappendはソースが長くなる //追加のたびインスタンス生成するため処理が重くなる //つまり、appendよりconcatのほうが優秀 str[0]=str[0].concat("→"); link[0]=str[0]; } } ここでなぜ,マウスプレスイベントなのかというとイベント処理が"一度だけ"呼ばれるからです。 出発点は点です。当然呼ばれる処理は1回でなければなりません。 終着点に関しても同じことが言えます。 ですが、内部処理と描画処理をわけるという基本的なことを忘れてました。。。 そこで考え直しました。 ・内部処理(配列への格納)はマウスプレス&リリース ・描画処理はマウスプレス(出発点)&マウスドラッグ(現在のマウスの座標) これによって線が描かれていくように描画できる。

hiro0825
質問者

お礼

返事が遅れてすみません。 もっと表現しやすくするにはと考えたところ少し変わったところもでてきました。 またその際は質問しますのでよろしくお願いします。

関連するQ&A

  • 文字列の配列

    文字列の配列 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 のようにIPアドレスが一行に一つづつ書き込まれたテキストがあります。 ここから、それぞれのIPアドレスを文字列として配列に書き込みたいのですが、どうしたらよいのでしょうか。 IPアドレスの数だけ配列を始めに宣言して、それぞれに書き込んでいくのでは手間がかかりすぎてしまいます。 単純に数値の羅列なら scanfを使い、配列に格納できるのですが、文字列になるとどうしたらいいのかわかりません。 よろしくお願いいたします。

  • テキストファイルから文字列を読み込んで二次元配列に格納するには

    毎回お世話になっています。 ただいまC言語を勉強中の学生です。 基本的な文法は頭に入れたつもりでしたが、まだポインタと ファイルの入出力に苦手意識があり 実際うまくできないでいるので どなたか ご存知の方にアドバイスいただければと思って書き込ませていただきます。 今回練習しているのは 先に述べたように、テキストファイルに abc def ghi jkl などと文字列を書いておき、そのファイルを読み込んで 二次元配列に格納したいのですが、何を勘違いしているのか、 うまく実現できません。 参考書などを見て 一次元配列へ格納する場合は できたようなのですが、今後このプログラムを発展させる段階で 二次元配列に文字列を 格納できたほうが好都合なので 今模索しています。。。 ちなみに 一次元配列に格納する場合は 以下のように書きました。 #include<stdio.h> #include<stdlib.h> main() { char a[10]; FILE *fp; fp = fopen("word.dat", "r"); if (fp == NULL) { printf("File does not exist.\n"); exit(1); } while(fscanf(fp,"%s",a)==1){ printf("%s\n",a); } fclose(fp); return 0; } 実はコレに関しても分からない点があり、それは 目的の配列変数 a[]に格納できたのだから それを確認したいと思い printfで a[0]~a[10]を表示してみようとしたところ 変に文字化け したものが表示されたり、何も表示されなかったり よく分からないことが起きます。私は何を勘違いしてしまっているのでしょうか(>_<) 長々と書いてしまいましたが、今回 御教授いただきたいのは (1)、テキストファイルから 英字の文字列を読み込んで二次元配列に格納するために用いるのに 一番最適な関数はどれか(fscanfやfgetsなど) そして、その関数を使って 一番シンプルな記述をするにはどのように記述すればよいのか (2)、上のようなプログラムの書き方で、配列aにテキストファイルから読み込んで格納できたようなのに、a[0]~a[10]をprintfしたときに うまく中身が表示されないのはなぜか。 という点なのですが、(1)をとりあえず急いでおりますので、(2)はおまけ程度に考えていただければと思います。 なぜかファイルの入出力がいまだに把握できなくて苦手としておりますので、どうか よろしくお願いいたします。

  • 文字列を配列に…。

    VBはまだ始めたばかりで本当に初歩的なことかもしれませんが分かる方がおられたら是非教えて下さい。 text1.textから取り込んだ文字列を”一文字ずつ”(Dim a(100) as stringで宣言した)配列に格納したいのですがどうしたらいいのでしょうか?? <例>text1.textに"abc"と入力しcommandbuttonを押すとa(0)に"a"がa(1)に"b"がa(2)に"c"が格納されるといったかんじです。 ちなみに今私がしたいのはtext1.textに、ある文字列を入れその文字列を文字コードに変換しそれを一文字分ずつ+1してまたそのコードを文字に直しtext2.textに出力するというものです(ようは簡単な暗号化ですね)。 私はAscとChrコマンドを利用して1文字ずつコードをずらしていこうと思っているのですが、他に良い方法などあるのでしょうか?? 本当に初心者でどのようにしらたよいのか分かりません…。 どなたか分かりやすく教えていただけませんでしょうか?? お願いします。

  • 配列

    あいうえお  の最初の文字(あ)だけをポインタ配列に格納して出力するというプログラムがどうしてもできません。 最初の文字をってところをどうやったらよいのかわからないので教えてほしいです。 おねがいいたします。

  • 配列にある文字列を1つの変数に改行付きで格納する方法

    配列にある文字列を1つの変数に改行付きで格納する方法 Array ( [0] => レタス [1] => トマト [2] => きゅうり ) などの配列を $yasai 変数へ ------ レタス トマト きゅうり ------ と格納してテキスト表示させたいのですが、どのようにすれば可能でしょうか? そもそも可能なのでしょうか?ご存知の方、いらっしゃいましたら宜しくお願いします。

    • ベストアンサー
    • PHP
  • 【C#】ドラッグ&ドロップについて

    前にも質問したのですが、行き詰まったのでもう一度質問します。 (1)リッチテキストボックスにテキストファイルをドラッグ&ドロップする。 (2)そのテキストファイルの内容をリッチテキストボックスに表示する。 というプログラムを作っています。 このうち(1)についてはほぼ解決したのですが、(2)についてはさっぱりです。(つまり、DragDropイベントの部分がわかりません。) どなたか教えて下さい。

  • 配列等へのアクセスについて

    プログラム初級者です。 普通配列などへデータを格納するときはインデックスを使って、取り出す時もインデックスを使うと思いますが、一意の文字列をキーとしてデータの格納、取り出しをするような方法はないでしょうか?

    • ベストアンサー
    • Java
  • 文字列と文字列をつなげるには

    下記のようにプログラムを作りました。 簡略しているのでわかりづらいと思いますが、 文字の配列と文字の配列を文字の配列に格納したいので、 下記のように$arrayに”.=”として文字列を加えて いますが、うまくいきません。 どのようにしたらいいのでしょうか? ご教授お願いいたします。 while($text[$i] != ""){ if($i==1){ $array[$j] = $feild[$j]; $array[$j] .= " "; $array[$j] .= substr($text[$i], $no, $pos); } }

    • ベストアンサー
    • PHP
  • ファイル内の文字を配列に格納

    ファイル内の文字列をも表示させた上で、文字列を配列に1つずつ格納したいのですが、とっても簡単な方法で教えてください。 ファイル名は「abc」で配列名は「moji」でお願いします。

  • Accessのフォーム内、テキストボックスで文字をドラック&ドロップで移動させることはできるのでしょうか?

    Access2000~2003でフォーム入力画面のテキストボックスで、入力した文字列を移動させたいとき、ワードと同じようにドラック&ドロップで文字を移動できるようにするプロパティの設定は可能でしょうか? また、プロパティ以外で方法はあるのでしょうか?お教え下さい。 よろしくお願い致します。