三日目
随分間が開いたように見えますが、実は私は前回からタイムワープしたのでそう見えるだけです。では三日目やっていきます。
タイムマシンの中でlabelのやり方を学習した。で、それについてはだいたいわかったのでこれについてはもういいかなという気になって来た。ゲーム中に画像とかは出す気があまりないし表示はこれでいいかなって
というかこれ以上をどうググったらいいのかがわからない…
というわけで今回は中身について勉強したいな。することにします。
とその前にプロジェクトを作るときのGameとかsingle view なんとかとかってなんだよってふと思ったのでググった
まあ要するにただのテンプレートらしい。今回はGameにしてるけどまあいいか。
で、この記事を読んでる時に気になったのは、最初に打ち込むBundle Identifierとかの項目である。アプリを配布する時に必要らしいが適当に作っちゃったけど後から変更できるんだろうか。
できるらしい。
ならいいか。その辺は深く考えずに進めよう。
で内部のコードである。
swiftはオブジェクト指向だったはず。オブジェクト指向といえばjava(自分にとっては)。
で確かクラスという雛形…設計図を作って、それを元に作られたインスタンスというオブジェクトを作り、それに対して指示を出す(メソッド(命令?)はクラス内に記述する)ことで処理を行う…みたいな感じだったはず。
ふむ。
作りたいのはリアルタイムのシミュレーションゲームみたいな感じのやつである。
なんかイメージしているのは…宇宙人の艦隊が攻めてくるので太陽系の各惑星に適切に艦隊を配置して防衛を行う!みたいな感じ。
とりあえずplanetクラスでも作って見ようかな?
んー…クラスの作りかたはそこら中に書いてあるが、そもそもそれをどこに置けばいいのかがわからん。
ここを参考に、とりあえずNew File から新しいファイルを作ってみる。ファイル名はとりあえずPlanetで。
で、どうしたらいいんですかね。
ここのクラス解説をちょっと読んでみる。とりあえず変数を宣言してみる。
varがいつものでletが定数らしい。
var value = 1 //変数
let value = 1 //定数
ここのページが詳しい。
で、とりあえず変数だけ作ったけどなんかエラー出た。"Class 'planet' has no initializers"?
イニシャライザというものが必要らしい。
ここの説明が詳しい。初期化関数とかいうものらしい
とりあえず作ってみる。
class planet {
let name: String // 名前
let size: Int //惑星の容量
var Productivity:Int //生産力
init(name: String, size: Int) {
self.name = name
self.size = size
}
}
そうそう、はてな記法で書くとソースコードが埋め込めるらしい。次からやろう。
で、なんかエラー出た。"Return from initializer without initializing all stored properties"?
どうも宣言した変数全てをここで初期化しておかないといけないらしい。違うかもしれない。でもそうしたら出なくなったのでとりあえずそういうことにしておく。
とりあえずこれをラベルにして表示してみよう。
できたみたいだが文字が見切れる。sizeToFitメソッドというもので設定できるらしい。
と、ここで電池が切れたのでまた続きは今度に…