ブログに書かれている内容は、リアルで喋っちゃ駄目だぞっ!
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ヤフオクで中古PCに入札しようとしたら、5000円以上の入札が出来ないです。
何事かと思ったら、Yahooプレミアム会員(月額有料)に登録しないと入札に制限される様になってた模様。
い…、いつの間に!!
去年の夏は一般会員のユーザーIDでも高額入札が出来たんですが…。
何が嫌だって、この類の手続きはクレジットカード番号を入れなくちゃいけないんですよね。
メールアドレスならその時限りの捨てアドでも取得して入力すれば良いですが、
クレジットカード情報はそうもいかないので入力したくないです。 管理も面倒ですし。
何事かと思ったら、Yahooプレミアム会員(月額有料)に登録しないと入札に制限される様になってた模様。
い…、いつの間に!!
去年の夏は一般会員のユーザーIDでも高額入札が出来たんですが…。
何が嫌だって、この類の手続きはクレジットカード番号を入れなくちゃいけないんですよね。
メールアドレスならその時限りの捨てアドでも取得して入力すれば良いですが、
クレジットカード情報はそうもいかないので入力したくないです。 管理も面倒ですし。
■ポケモンダメージ計算ツール
前回のキノガッサの件により、計算ツールを早く作るべきだなと思い制作の続きをやってます。
技や種族値のデータ入力が面倒なのを、CSVファイルの読み込みで対応する事にしました。
↑がwikiの内容をエクセルにコピペして整理した物です。
手入力で1つの技情報を入力する時間 > コピペであ行の70個の技情報を保存する時間
貼り付けた内容は、ファイル読み込みの処理が楽なCSVファイルで保存します。
CSVファイルはデータ毎に,(コンマ)で句切られていて、メモ帳で開くと以下のようになっています。
これをプログラム上で読み込み、配列か構造体にでも格納して使います。
ファイル読み込みはCとC++でやった事がありますが、今回はC#が開発言語です。
CもC++もC#も基本的な部分は似ていますが、微妙な違いがまた面倒なんだなこれが。
C#のファイル読み込みは、StreamReaderを使います。
今回はCSVファイルの中身を1文字ずつ読み込んでchar型の2次元配列に格納します。
イメージとしては、こんな感じ。
char [ , ] waza = new char[技の数,4]
デバックで1文字ずつ読み込んでみると、テキスト形式で改行されてる箇所が「¥r¥n」となっていたので、
1文字ずつファイルを読み込んで配列に格納し、「,」と「¥r」と「¥n」のは読み飛ばして格納する配列を切り替える。
これでOKだと思います。
さて、今詰まってるのが文字の格納です。 (正確には文字列の格納)
最初の「技名」という文字をwaza[0,0]に格納する場合、簡単な書き方だとこうなります。
waza[0,0] = "技名";
今回は1文字ずつ読み込んで順番に格納していくので
最初の状態 → waza[0,0] = " "
読み込んだ文字 技 → waza[0,0] = "技"
読み込んだ文字 名 → waza[0,0] = "技名"
読み込んだ文字 , → waza[0,0]の格納を終了
StreamReaderで読み込んだ文字はString型なので、途中でchar型に変換する必要があります。
C#での型変換は「Convert.ToChar()」もしくは「char.Parse()」を使います。
ここからが問題です。
String型で「技」と「名」の文字を連結し、String型の「技名」という文字列をChar型に変換しようとします。
すると……
文字の型変換は1文字ずつしか出来ません? 何でやねん!
String型で「技」と「名」の文字をそれぞれchar型に変換し、char型の「技」と「名」を連結。
これならどーよ!?
すると……
「技名」ではなく、1文字だけのハングル文字に。 何でやねん!
何でやねん。 なーんでーやねーーん!!
ハングル文字になったのは、1文字目の「技」が格納されているアドレスを移動して違う文字になったって事でしょうか。
char型の文字同士を連結する関数を探して使えって事ですかね。
C++の時は文字列の連結で悩まなかったはずなんだけどなぁ……。
前回のキノガッサの件により、計算ツールを早く作るべきだなと思い制作の続きをやってます。
技や種族値のデータ入力が面倒なのを、CSVファイルの読み込みで対応する事にしました。
↑がwikiの内容をエクセルにコピペして整理した物です。
手入力で1つの技情報を入力する時間 > コピペであ行の70個の技情報を保存する時間
貼り付けた内容は、ファイル読み込みの処理が楽なCSVファイルで保存します。
CSVファイルはデータ毎に,(コンマ)で句切られていて、メモ帳で開くと以下のようになっています。
これをプログラム上で読み込み、配列か構造体にでも格納して使います。
ファイル読み込みはCとC++でやった事がありますが、今回はC#が開発言語です。
CもC++もC#も基本的な部分は似ていますが、微妙な違いがまた面倒なんだなこれが。
C#のファイル読み込みは、StreamReaderを使います。
今回はCSVファイルの中身を1文字ずつ読み込んでchar型の2次元配列に格納します。
イメージとしては、こんな感じ。
char [ , ] waza = new char[技の数,4]
waza[0,0] = "技名" | waza[0,1] = "威力" | waza[0,2] = "タイプ" | waza[0,3] = "種類" |
waza[1,0] = "10まんボルト" | waza[1,1] = "95" | waza[1,2] = "でんき" | waza[1,3] = "1" |
waza[2,0] = "アームハンマー" | waza[2,1] = "100" | waza[2,2] = "かくとう" | waza[2,3] = "0" |
デバックで1文字ずつ読み込んでみると、テキスト形式で改行されてる箇所が「¥r¥n」となっていたので、
1文字ずつファイルを読み込んで配列に格納し、「,」と「¥r」と「¥n」のは読み飛ばして格納する配列を切り替える。
これでOKだと思います。
さて、今詰まってるのが文字の格納です。 (正確には文字列の格納)
最初の「技名」という文字をwaza[0,0]に格納する場合、簡単な書き方だとこうなります。
waza[0,0] = "技名";
今回は1文字ずつ読み込んで順番に格納していくので
最初の状態 → waza[0,0] = " "
読み込んだ文字 技 → waza[0,0] = "技"
読み込んだ文字 名 → waza[0,0] = "技名"
読み込んだ文字 , → waza[0,0]の格納を終了
StreamReaderで読み込んだ文字はString型なので、途中でchar型に変換する必要があります。
C#での型変換は「Convert.ToChar()」もしくは「char.Parse()」を使います。
ここからが問題です。
String型で「技」と「名」の文字を連結し、String型の「技名」という文字列をChar型に変換しようとします。
すると……
文字の型変換は1文字ずつしか出来ません? 何でやねん!
String型で「技」と「名」の文字をそれぞれchar型に変換し、char型の「技」と「名」を連結。
これならどーよ!?
すると……
「技名」ではなく、1文字だけのハングル文字に。 何でやねん!
何でやねん。 なーんでーやねーーん!!
ハングル文字になったのは、1文字目の「技」が格納されているアドレスを移動して違う文字になったって事でしょうか。
char型の文字同士を連結する関数を探して使えって事ですかね。
C++の時は文字列の連結で悩まなかったはずなんだけどなぁ……。
PR
KKK(きっときっと楓ちゃん)
当ブログは、shuffle!に登場する楓ちゃんを応援しています。
ブログ内検索
アーカイブ
名雪かわいいよ、名雪