Minecraft仲間でプログラミングとかBlog

Minecraft・プログラミング・ゲーム [ [ [ 以上 ] ] ]

一ヶ月と半月放置してました。ごめんなさい
最近CoffeeScriptという、コンパイルするとJavaScriptに変換されるプログラミング言語を知りました
なので、この記事では私の練習を兼ねてドットインストールのこのレッスンをCoffeeScriptのコードに変えて書いていきたいと思います
※シンタックスハイライトがCoffeeScript対応してないので、すこしおかしいかも。
インデントは、しっかりと処理によって揃えましょう。揃えないと、エラーのもとになります

#03 クマを表示してみよう
enchant() 
 
### 
 
Core 
- rootScene 
-- Sprite (bear) 
 
### 
 
window.onload = -> 
 
	core = new Core 320, 320 
	core.preload 'chara1.png' 
	core.onload = -> 
 
		bear = new Sprite 32, 32 
		bear.image = core.assets['chara1.png'] 
		bear.x = 0 
		bear.y = 0 
 
		core.rootScene.addChild bear 
 
	core.start()  
 
#04 クマを動かしてみよう 
enchant() 
 
### 
 
Core 
- rootScene 
-- Sprite (bear) 
 
### 
 
window.onload = -> 
 
	core = new Core 320, 320 
	core.preload 'chara1.png' 
	core.fps = 15 
	core.onload = -> 
 
		bear = new Sprite 32, 32 
		bear.image = core.assets['chara1.png'] 
		bear.x = 0 
		bear.y = 0 
 
		bear.addEventListener 'enterframe', -> 
			@x += 10 
			@x = 0 if @x > 320 
			@rotate 2 
			@scale 1.01, 1.01 
 
		core.rootScene.addChild bear 
 
	core.start()   
 
とりあえず、今回はここまで。

まず、NSDictionary型のインスタンスを作ります。

NSDictionary *dictionary = [NSDictionary dictionaryWithObject:@"125" forKey:@"count"];

こんなかんじです。今回は、

Object = 125
Key = count

がDictionaryの中に入っています。

で、これをwriteToFileで書き込むとき。


①書き込む場所を決める

これは場合によって書き込み(読み込み)するとき使うフォルダが異なります。

Documents アプリを終了させたあとも残しておきたいファイルを置きます
tmp アプリを終了させた後、残す必要のない一時ファイルをおいておきます

で、この記事ではDocumentsData.plistという名前で保存するということにします。

②コードを書きます

/* stringWithFormatはこういうところで便利。
NSHomeDirectoryは12345678-9012-ABCD-EFGH-IJK123456789的な
アプリが入ったフォルダを出してくれる */
NSString *path = [NSString stringWithFormat:@"%@/Data.plist", [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]];

//ここで書き込み。atomicallyをNOにするとそのまま上書き、YESにすると一旦別ファイルとして作ってからリネームして差し替え
[dictionary writeToFile:path atomically:YES];
こういう風になります。

plistファイルはこのように書き込まれる...はず

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>count</key>

<integer>125</integer>

</dict>

</plist>


③逆に読み込む場合 

まず、ファイルのPathを同じように用意します。

NSString *path = [NSString stringWithFormat:@"%@/Data.plist", [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]];
で、次にファイルを読み込んでNSDictionary型のものに入れます。

NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:path];
こうすると、普段通りobjectForKeyとか使えるようになります。
 

この問題で私は半日と3時間ほど悩みましたが、このサイト(http://lwjgl.org/wiki/index.php?title=Downloading_and_Setting_Up_LWJGL)にて解決いたしました。

この環境だとして話します。
 47

OS X 10.9.1
eclipse 4.3

まず、
  • Mac OS X
    • Open a terminal and navigate to the folder where the archive was extracted (i.e., by using the cd command). Then issue the following command (all in one line):
  • java -cp .:res:jar/lwjgl.jar:jar/lwjgl_test.jar:jar/lwjgl_util.jar:jar/jinput.jar: -Djava.library.path=native/macosx org.lwjgl.test.WindowCreationTest


    とありました。
    で、翻訳すると

    ターミナルを開き、アーカイブを解凍したフォルダに移動します(cdコマンドを使います)
    続いて、次のコマンドを実行します(一行に全てある)
    java -cp .:res:jar/lwjgl.jar:jar/lwjgl_test.jar:jar/lwjgl_util.jar:jar/jinput.jar: -Djava.library.path=native/macosx org.lwjgl.test.WindowCreationTest

    となります。では手順を配布時用に書いていきます。

     
     

     
     
  1. 作業用フォルダを作成(今回は私のユーザー名はyusukeなので/Users/yusuke/Desktop/ にGLtestというフォルダを作ったとします)
  2. eclipseでPackage Explorerにてどこでもいいので右クリック、Export...を選択
  3. Java>Runnnable JAR Fileを選び、Next
  4. 起動構成に配布したいプロジェクトを選ぶ
  5. エクスポート先には/Users/yusuke/Desktop/を選ぶ
  6. ライブラリー処理は一番下を選ぶ。そしてFinish
  7. /Users/yusuke/Desktop/GLtest/にGLtest.jarとGLtest_libが生成されます。確認したらTerminalを起動します
  8. cd /Users/yusuke/Desktop/GLtest/を実行
  9. emacs start.command(ここは必要に応じて名前を変更)を実行
  10. emacsの画面が表示されます。そしたらこれをタイプしてください
#! /bin/bash
cd $( dirname $0 )
java -cp ./GLtest_lib/lwjgl.jar:GLtest_lib/slick.jar:${CLASSPATH} -Djava.library.path=./GLtest_lib -jar GLtest.jar #必要に応じて-cpオプションのところにjarを追加

cd $ ( dirname $0 )についてはググれば出てくるはず

java -cpのあとに続いているのはclasspathです。ここでクラスパスを指定しています。
${CLASSPATH}にはデフォルトのクラスパスが入っています。確認する場合は"echo ${CLASSPATH}"

-Djava.library.path=./GLtest_libは、native libraryを指定しています。これがないと

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path 

が発生します。


  • タイプしたら、Control+xのあとsを押して、yを押せば保存されます。そしたらControl+zで終了させましょう
  • chmod +x start.commandを実行(ダブルクリックで開けるようにする)
  • ダブルクリックで多分開けるようになるはず

※重要な話

GLtest_libにはlwjgl.jarなどや、openal.dylibなどのjar+native libraryを入れておく前提にしてあります。

もしjarとnative libraryを分けるとしたらこのようなコマンドになります。

java -cp /lib/lwjgl.jar:lib/slick.jar:${CLASSPATH} -Djava.library.path=./nativelib -jar GLtest.jar

一応参考としてサンプルファイルを配布します。 

こ↑こ↓

↑このページのトップヘ