ekCraft blog

SE転向を目指すサンデープログラマーの備忘録

【Swift】NSUserDefaultsでデータを保存する

ゲーム製作の中でスコアのランキングをInt型の配列で作ったのですが、そのままではアプリを終了すると(当然ですが)消えてしまいます。再度アプリを立ち上げた時、前回のスコアランキングが保持されている仕様にしたく、例によってネットで色々と調べまわり、NSUserDefaultsを使ってデータを保存するという方法をとりました。また、その中で参考サイトのサンプルプログラム通りにプログラムしてもうまくいかなかった部分(特に下記手順4)は、エラーが出ず、期待した振る舞いをしてくれるところまでなんとか手探りで修正しました。

もっと良い書き方をご存知でしたら、是非教えて頂きたいです。

環境


Swift 2
Xcode 7.2

手順


  1. 保存するデータをつくる。

    var scores = [0,0,0,0,0,0]

    ※今回はInt型、6要素の配列としました。

  2. 利用するクラスの中でNSUserDefaultsのインスタンスをつくる。

    let ud = NSUserDefaults.standardUserDefaults()

  3. データを書き込みたい場所に以下のコードを書く。

    ud.setObject(scores, forKey: "scoresKey")
    ud.synchronize()

  4. データを読み込みたい場所に以下のコードを書く。

    if ud.objectForKey("scoresKey") != nil {
    scores = ud.objectForKey("scoresKey") as! [Int]
    }

  5. 保存されたデータを削除したい場所に以下のコードを書く。

    ud.removeObjectForKey("scoresKey")

参考サイト


swift-salaryman.com

qiita.com

いつもありがとうございます。

【Swift】AVAudioPlayerで音楽を再生する

現在、以下の書籍を使って製作したゲームアプリをベースにオリジナルのアレンジを加えて、Swiftの勉強をしています。

iPhoneのゲームアプリをつくろう!

iPhoneのゲームアプリをつくろう!

 

 「入門」や「初心者向け」を謳う多くの書籍の中で、この本ほど優しい本を私は知りません。もし「プログラム全くかじったことないけど、iPhoneアプリ作ってみたい」とか、「iPhoneアプリ作るって何?どういう感じ?」という方がいたらとてもオススメです。

 

さて、製作したゲームの中で音楽を流したかったのですが、調べに調べて「どうやらAVAudioPlayerというものを使うらしい」というところまでは辿り着いたのですが、調べたページのコードを参考にしても、どうもうまくいかず、ずっと匙を投げたり放置したりしていたのですが、やっとまともに音楽が再生できました。

 

理解はできてませんがとりあえずできた方法を忘れないように書いておきます。

 

環境


Swift 2

Xcode 7.2

 

手順


  1. AVFounditionフレームワークを追加する。
  2. Supporting Filesに音楽ファイルをドラッグ&ドロップする。
  3. ViewControllerにimport AVFounditionを書く。
  4. ViewControllerクラスにAVAudioPlayerDelegateを継承させる。
  5. ViewControllerクラスの中でAudioPlayerを宣言する。

    f:id:ekCraft:20160128173836p:plain

  6. 再生するクラス(TitleSceneとします)にもimport AVFounditionを書く。
  7. TitleSceneクラスの中でViewControllerをインスタンス化する。

    f:id:ekCraft:20160128174427p:plain

  8. 再生したい場所に以下のコードを書く。

    f:id:ekCraft:20160128174916p:plain

    ※音楽ファイル名:scene1.mp3

  9. 止めたい場所に以下のコードを書く。

    f:id:ekCraft:20160128183911p:plain

 

8のコードtry catchの部分は最初以下のように書いてたんですがどうしてもエラーが出てしまってつまづいていました。どなたかわかる方がいたら是非教えてください。。

f:id:ekCraft:20160128171930p:plain

2016-1-30 追記:

AVAudioPlayer(contentsOfURL: error: )という書き方はSwift 1.X時代の書き方であるとご指摘をいただきました。 

 

参考サイト


【Swift】音を鳴らす - とりあえず何でも書く

qiita.com

akira-watson.com

Mika's

いつも本当に助かってます。ありがとうございます。 

【OS X】Inkscape 0.91をインストール〜日本語化

ふとIllustratorを使ってみたくなったけど、ただの興味本位でお金かけるのもなぁ…。というわけでIllustratorと近い性能を持つと聞くInkscapeを入れてみました。

 

インストールは特に問題なくできましたが、日本語化する方法が最新バージョン(2015.11.22現在)では調べてもよくわからなかったので、とりあえずできた方法を備忘録も兼ねて書き留めておきます。もしかしたら正規の方法ではないのかもしれません。

 

【環境】


MacBook Pro (13-inch, Late 2011)

OS X 10.11.1

 

まず以下のリンクからInkscapeをダウンロード。

Mac OS 版 | Inkscape

 

ダウンロードページの手順にあるように、MacInkscapeを使うにはXQuartzというものもインストールしておく必要があります。XQuartzのインストールを完了するには、再起動が必要です。

XQuartz

 

で、無事インストールが終わって起動してみると、メニューが全部英語。どうしよう…。

 

以下のサイト様を参考に設定を変更しようと試みても、

dezisaru.com

バージョンが違うからか、[File]の中に[Inkscape Preference]がない。

貪ってようやく[Edit]の中に[Inkscape Preference]を見つけたものの、今度は[Interface]に[Language]がない…。(見つけられなかっただけかも)

 

さらに調べて、以下サイト様にたどり着きました。

構想雑文 : [Mac]MacOSXでInkscapeを日本語化して使う方法 - livedoor Blog(ブログ)

 

え、こんなことして大丈夫なの…?

でもコメントアウトするだけだろうからおかしくなっちゃたら元に戻せば大丈夫だろう…。たぶん…。

 

という考えに至り、「Resources/bin/inkscape」をテキストエディットで開いたものの、該当する部分は見つからず。

 

もうこの時点で「あーもーやだー全部アンインストールしてもう何もなかった事にしたいw」という心境でしたがw、なんとか折れた心をたて直し、とりあえずダメもとで以下の赤枠部分を全てコメントアウトして起動してみたら、なぜか日本語化されてました。

 

f:id:ekCraft:20151122235856p:plain

そして今適当にいじくってみてますが面白いです。

f:id:ekCraft:20151123000404p:plain

あーつかれた。

 

 

日本語化した後[編集]-[Inkscapeの設定]を見ると、ちゃんと[インターフェイス]-[言語]がありました。やっぱり見つけられなかっただけだったんでしょうか・・・?

 

まあいいやw

もし[Edit]-[Inkscape Preference]-[Interface]-[Language]から日本語化できない場合はこんな方法もあるみたいですよ。ということで、ご参考までに。