ヘキサ日記 Blog

 

2017年2月2日

敵とか武器とかアイテムとか

「花粉シーズン突入、予想飛散量は約1.2倍」というニュースを見て、

もう外に出たくないなぁ~なんて思い始めてます。

こんにちは、だっちです

花粉症の人は一刻も早く対策を始めたほうが良いですよ

 

 

突然ですが、ゲームを作るときに必要になるデータってたくさんありますよね。

その中でも敵とか武器とかアイテムとかのパラメーター、何で管理していますか?

社内では、データを入力する企画の方々が使い慣れているExcelを使う事が多いです。

 

 

今回は、Excelで作成した各種データを、

ゲーム内で扱いやすい形に変換するためのプログラムを、

 ・ゲーム内で扱うための型を自動的に生成

 ・型を生成するための情報はExcel内に定義

できるように、作っていこうと思います。

 

 

Excelファイルを扱うためのライブラリは色々ありますが、

今回は「NPOI」というライブラリをC#経由で使ってみようと思います。

 

 

早速、NPOIを使用してExcelファイルの中身を取得していこうと思います。

適当なExcelファイルを作成して、

適当にC#プロジェクトを作成して、DLしてきたNPOIを参照に加えておきます。

 

 

今回はこんな感じのExcelデータを用意しました。

NPOITestExcelDataSample

 

 

NPOIを使用してExcelファイルを読み込むためのコードはこんな感じ

using System;
using System.IO;
using NPOI.SS.UserModel;

namespace NPOITest
{
	class Program
	{
		// エントリポイント
		public static void Main(string[] args)
		{
			// 入力受付
			Console.Write("Please input excel file path : ");
			var srcPath = Console.ReadLine();

			// ファイル存在確認
			if( !File.Exists(srcPath) ) {
				Console.WriteLine("file not exists.");
				return;
			}

			// 読み込み
			using( var fs = new FileStream(srcPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) ) {
				var workbook = WorkbookFactory.Create(fs);

				// 中にあるシートを順番に取得
				Console.WriteLine("Sheets :");
				foreach( ISheet sheet in workbook ) {
					if( sheet == null ) continue;

					// シート名表示
					Console.WriteLine("	Name : " + sheet.SheetName);

					// A1セルの内容を読み込み
					// まずは行を取得
					var row = sheet.GetRow(0);
					if( row == null ) continue;

					// 行からセルを取得
					var cell = row.GetCell(0);
					if( cell == null ) continue;

					// セルが取得できたら表示
					Console.WriteLine("		A1 : " + cell.ToString());
				}
			}
		}
	}
}

 

 

実行結果

NPOITestExecResult001

中にあるシートとセルに入力されている文字列が取得できていますね

 

 

次回は、「型を生成するための情報」を定義していきたいと思います。

ではでは~

 

 


ヘキサブログ ピックアップ



過去の日記はこちら

2017年10月
« 9月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031