-1

私は最近ここに質問を投稿しました

次から次へとジャンプしないランダムに生成されたトンネルの壁

アルゴリズムがないため、相関トンネルではなく、「酔っぱらい」トンネルを取得していると言えます。

答えは、作成しようとしているものに対してある程度機能しますが、ゲームにアルゴリズムを適切に実装する方法がわかりませんでした。

ステップ 1 は、壁のペアのオフセットを作成することだと思います。画面の両側に表示される画像 (名前: "Left1" と "Right1"、"Left2 と "Right2".... "Left41" と Right41") を、わずかにオフセットして "再生成" したい外観にトンネルのような錯覚を作り出すために、左右を連続して動かします。回答で提供されたコードを使用して、壁のセットのオフセットを作成しようとしましたが、構築しようとするとエラーがほとんど発生しません。最初に、「Left1」のローカル宣言がインスタンス変数を非表示にすることを教えてくれましたが、これは、関数内で変数として既に宣言されているためだと思いますか? それは2回出てきました..それに加えて、Assigning to 'UIImageView *__strong'というエラーがあります 互換性のない型 'float' から。これらを修正するにはどうすればよいですか? それとも、私がどこかで間違っていることですか?

セマンティックの問題により、実際に再配置する方法がわからないため、この部分で少し迷っています。

状況を簡単に評価できるように、プログラムに関する質問に答えることができます。

-(void) TunnelMovement{

    CGFloat Left1 = 14;
    for( int i = 0; i < 41; i++ ){
        CGFloat offset = (CGFloat)arc4random_uniform(2*100) - 100;
        Left1 += offset;
        Right1 = Left1 + 14;
        //...
    }
}

これは、与えられた答えから空白を埋めようとした後、コードに正確に含まれているものです。必需品をすべて入れたかどうかはわかりません。ありがとうございました。

4

1 に答える 1

0

[そのエラー メッセージをすぐに修正できますが、あなたは走ろうとしていて、まだ歩くこともできず、かろうじて這うこともできません。Stack Overflow はプログラミング フォーラムですが、プログラミングを学んだり教えたりする場所ではありません。基本を教える忍耐力はありません。]

まったく別のものである場合、あるものの価値を別のものに割り当てることはできません。行で:

Right1 = Left1 + 14;

Right1 は UIImageView で、Left1 は CGFloat です。これらはまったく別のものです。Left1 は単純な数値で、Right1 は複雑なオブジェクトです。

UIImageView を配置しようとしているので、Left1 + 14 の値を配置する UIImageView の一部に割り当てる必要があり、これは CGFloat でもあります。

したがって、境界、フレーム、または中心の x 値などに割り当てる必要があります。

Right1.center.x = Left1 + 14;

警告は、同じ名前の 2 つの異なるものがあるためです。Left1 という UIImageView がありますが、Left1 という CGFloat もあります。2 つの異なるものに同じ名前を付けてはなりません。CGFloat Left1 は、Left1 という UIImageView を非表示にします。 . 他の質問への回答にあるように、Left1X または LeftWallX などと呼ぶ必要があります。

これは単なるエラーと警告です。これら 2 つに苦労している場合は、迷路の描画方法のセマンティクスに進む準備ができていない可能性があります。特に、変更する値と、それらの値を変更すると位置にどのような影響があるかを完全に理解するために、境界、フレーム、中心、x、y、CGPoint、CGRect、CGSize のすべてを知る必要があります。 UIImageViews。

---- EDIT --- オブジェクトプログラミング 101

UIImageView のようなオブジェクトがある場合、家を持っているようなものです。家には名前があり、その中にたくさんの部屋があり、それぞれに名前があり、各部屋にはたくさんのものがあります。ある部屋の古いテレビを新しいテレビに取り替えるのと同じことをしようとしています。

だからRight1は家のようなものです

Right1.center は家の中の部屋のようなものです

Right1.center.x は、Right1 という家にある center という部屋のテレビのようなものです。

Right1 = Left1 + 14;

家の中の部屋のテレビと交換しようとするのではなく、新しいテレビを家と交換しようとするようなものです。

その比喩はあまりにもばかげていますか?

于 2014-05-02T20:59:57.143 に答える