Java ゲーム作成 〜データセットを作る1 〜

ゲームを作成するために、調べたことや、まとめたことなどはデータとして持っておきたいものです。
そして、ゲームの中で使えるものは使えるようにしたいと思うのが人情だと思います。

そんなわけで、今回はCSVデータを作成しそれをDBに登録する方法に関して記載したいと思います。

前提

・DBはレンタルサーバーなどで、使用できるphpAdminなどのツールを使用している
・CSVファイルを読み込ませてDBに登録できないときは、プログラムでデータをINSERTする

まずはテーブルを考える

シンプルに、データを保存して管理するには、DBを使うのが一般的です。
今後、仕事でもDBを使用することは多くなると思います。(あてにはなりませんが、そんな気がする。。。)
というわけで、簡単にテーブルの概念を理解してCSVを作成しようと思います。

突然出てきた「CSV」は

カンマ区切りのデータが記述された、テキストファイル』です。

そして、サンプルとして以下のようなものを作りました。

ID, AreaName
1, アジア
2, 大洋州
3, 北米
4, 中南米
5, 欧州
6, 中東
7, アフリカ

世界の地域を7つに分類してあります。参考はこちらのサイトです。外務省のページなので問題ないでしょう。。。

ここで、ちょっと疑問を持ってみてください。
「左の数字派なんだ?」、「カンマ区切りの。。。はいいけどなんで区切ってるの?」。。。

これらの疑問に対する答えは、下のような目的のためです

  1. 番号(ID)を振っておくとテーブル同士を関連づけするときに楽
  2. DBのデータは「テーブル」という領域に保存されます。テーブルは「カラム」という枠を持っていてそこにデータを保存します。

具体的に。。。

TABLE名: World_Area
カラム名1: ID
カラム名2: AreaName

簡単に定義してみました。ちなみにこれらのテーブルを定義するのに使用するのは「SQL」というプログラミング言語です。こんな感じです。

テーブル名が一番上にあり、中にカラム名があります。
そしてその横には「データ型」があります。

テーブルを作成したと仮定して話をすると、作成した国名のテーブルと地域のテーブルを結合してやると国名と地域の関連付けした形の表を作ることができます。

いわゆる「SELECT文」を使用します。
「SELECT * FROM XXXX」のような形でSQLを書きます。

他にも「制約」をつけたり、色々とできますが、今の所はここらへんで。。。

データセットを作る

ちょいと作った「世界の地域」テーブル用のCSVデータは表にすると下のようになります。

世界の地域一覧

ID AreaName
1 アジア
2 大洋州(オセアニアを含む)
3 北米
4 中南米
5 欧州
6 中東
7 アフリカ

この状態では、自分の欲しい情報が何も載っていないので追加します。

国名一覧(今後更新していきます)

ID CountryName AreaID
1 アイスランド共和国 5
2 アイルランド 5
3 アゼルバイジャン共和国 5
4 アフガニスタン・イスラム共和国
$ アメリカ合衆国
6 アラブ首長国連邦
7 アルジェリア民主人民共和国
8 アルゼンチン共和国
9 アルバニア共和国 5
10 アルメニア共和国 5
11 アンゴラ共和国
12 アンティグア・バーブーダ
13 アンドラ公国
14 イエメン共和国
15 イスラエル国
16 イタリア共和国 5
17 イラク共和国
18 イラン・イスラム共和国
19 インド
20 インドネシア共和国
21 ウガンダ共和国
22 ウクライナ 5
23 ウズベキスタン共和国 5
24 ウルグアイ東方共和国
25 英国(グレートブリテン及び北アイルランド連合王国) 5
26 エクアドル共和国
27 エジプト・アラブ共和国
28 エストニア共和国 5
29 エスワティニ王国
30 エチオピア連邦民主共和国
31 エリトリア国
32 エルサルバドル共和国
33 オーストラリア連邦
34 オーストリア共和国 5
35 オマーン国
36 オランダ王国 5
37 ガーナ共和国
38 カーボベルデ共和国
39 ガイアナ共和国
40 カザフスタン共和国 5
41 カタール国
42 カナダ
43 ガボン共和国
44 カメルーン共和国
45 ガンビア共和国
46 カンボジア王国
47 北マケドニア共和国 5
48 ギニア共和国
49 ギニアビサウ共和国
50 キプロス共和国 5
51 キューバ共和国
52 ギリシャ共和国 5
53 キリバス共和国
54 キルギス共和国 5
55 グアテマラ共和国
56 クウェート国
57 クック諸島
58 グレナダ
59 クロアチア共和国 5
60 ケニア共和国
61 コートジボワール共和国
62 コスタリカ共和国
63 コソボ共和国 5
64 コモロ連合
65 コロンビア共和国
66 コンゴ共和国
67 コンゴ民主共和国
68 サウジアラビア王国
69 サモア独立国
70 サントメ・プリンシペ民主共和国
71 ザンビア共和国
72 サンマリノ共和国 5
73 シエラレオネ共和国
74 ジブチ共和国
75 ジャマイカ
76 ジョージア 5
77 シリア・アラブ共和国
78 シンガポール共和国
79 ジンバブエ共和国
80 スイス連邦 5
81 スウェーデン王国 5
82 スーダン共和国
83 スペイン 5
84 スリナム共和国
85 スリランカ民主社会主義共和国
86 スロバキア共和国
87 スロベニア共和国
88 セーシェル共和国
89 赤道ギニア共和国
90 セネガル共和国
91 セルビア共和国 5
92 セントクリストファー・ネービス
93 セントビンセント及びグレナディーン諸島
94 セントルシア
95 ソマリア連邦共和国
96 ソロモン諸島
97 タイ王国
98 大韓民国
99 タジキスタン共和国 5
100 タンザニア連合共和国
101 チェコ共和国 5
102 チャド共和国
103 中央アフリカ共和国
104 中華人民共和国
105 チュニジア共和国
106 チリ共和国
107 ツバル
108 デンマーク王国 5
109 ドイツ連邦共和国 5
110 トーゴ共和国
112 ドミニカ国
113 ドミニカ共和国
114 トリニダード・トバゴ共和国
115 トルクメニスタン 5
116 トルコ共和国
117 トンガ王国
118 ナイジェリア連邦共和国
119 ナウル共和国
120 ナミビア共和国
121 ニウエ
122 ニカラグア共和国
123 ニジェール共和国
124 ニュージーランド
125 ネパール連邦民主共和国
126 ノルウェー王国 5
127 バーレーン王国
128 ハイチ共和国
129 パキスタン・イスラム共和国
130 バチカン市国 5
131 パナマ共和国
132 バヌアツ共和国
133 バハマ国
134 パプアニューギニア独立国
135 パラオ共和国
136 パラグアイ共和国
137 バルバドス
138 ハンガリー 5
139 バングラデシュ人民共和国
140 東ティモール民主共和国
141 フィジー共和国
142 フィリピン共和国
143 フィンランド共和国 5
144 ブータン王国
145 ブラジル連邦共和国
146 フランス共和国 5
147 ブルガリア共和国 5
148 ブルキナファソ
149 ブルネイ・ダルサラーム国
150 ブルンジ共和国
151 ベトナム社会主義共和国
152 ベナン共和国
153 ベネズエラ・ボリバル共和国
154 ベラルーシ共和国 5
155 ベリーズ
156 ペルー共和国
157 ベルギー王国 5
158 ポーランド共和国 5
159 ボスニア・ヘルツェゴビナ 5
160 ボツワナ共和国
161 ボリビア多民族国
162 ポルトガル共和国 5
163 ホンジュラス共和国
164 マーシャル諸島共和国
165 マダガスカル共和国
166 マラウイ共和国
167 マリ共和国
168 マルタ共和国 5
169 マレーシア
170 ミクロネシア連邦
171 南アフリカ共和国
172 南スーダン共和国
173 ミャンマー連邦共和国
174 メキシコ合衆国
175 モーリシャス共和国
176 モーリタニア・イスラム共和国
177 モザンビーク共和国
178 モナコ公国 5
179 モルディブ共和国
180 モルドバ共和国 5
181 モロッコ王国
182 モンゴル国
183 モンテネグロ 5
184 ヨルダン
185 ラオス人民民主共和国
186 ラトビア共和国 5
187 リトアニア共和国 5
188 リビア
189 リヒテンシュタイン公国
190 リベリア共和国
191 ルーマニア 5
192 ルクセンブルク大公国 5
193 ルワンダ共和国
194 レソト王国
195 レバノン共和国
196 ロシア連邦 5

しかし、ここまでやるのに時間がかかったので、やはりプログラムで表を作成する方向にシフトしようと思います。
実際に手で作業をしてみたので、手順はすでに頭の中にあります。

問題はどのように、地域別にデータを作成するか?というところですが、こちらのページに地域別の国名リストがあるのを発見したので、こちらを失敬しようと思います。

素材のCSVファイルを作る

「素材の〜」というのは、プログラムに食わせる(渡す)ためのCSVです。
大まかな設計としては下のようなものです。

  1. 地域別のCSVを作成する
  2. 地域別のIDを付与して全ての(地域別の)CSVをまとめて1つのCSVにする

大まかな設計なので、いまいちピンと来ないと思いますが、下のように作成します。

1. 素材CSVファイルを作成する

世界の地域を7つに分けました。以下のような表になります。 ID AreaName
1 アジア
2 大洋州(オセアニアを含む)
3 北米
4 中南米
5 欧州
6 中東
7 アフリカ

そして、それぞれの地域にリンクを貼り付けておきます。
上の表地域名から参考ページに遷移できます。

CSV作成

上の名前のCSVファイルを作成します。ID=1であれば「アジア.csv」というファイルを作成します。

そしてこれをJavaプログラムに食わせます。

Javaでファイル読み込み

JUnitでのFile読み込みのテスト及びソースをこの記事に記載しています。
こんな感じでFileを読み込みます。愚多的には、全ての作成したCSVを読み、それをプログラムで整形して改めてCSVに出力します。

とりあえずは、設計がまとまらないのでここで中断します。

でわでわ。。。



投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す