1

私はiPhoneでプロジェクトを作成しており、非常に初心者です。アプリを作っTic Tac Toeているのですが、順番を変える機能を作りたいです'X' to 'O'

だから私はこれを入力しようとしました

void setTurn(){
    SinglePlayer*SO=[[SinglePlayer alloc]init];
    SO .turn =1;
    if (SO.turn%2==0){
        SO->turnLabel.text=@"O Turn";
    }
    else SO->turnLabel.text=@"X Turn";
    SO.turn++;
}

と SO を意味しSinglePlayerObjectます。

実装のヘッダーでこれを定義したものは何でも

そして、メソッドputSign();の下にこのメソッドを入力しようとしたとき

-(IBAction)PutSign2:(id)sender{
    if (turn%2 !=0){
        label2.text=@"X";
    }
    else if (turn%2 ==0){
        label2.text=@"O";
    }
}

エラーが表示されます。

C ++の経験があるので、どうすればC++と同じメソッドを実行できますか?

これはヘッダーファイルです

#import <UIKit/UIKit.h>

@interface SinglePlayer : UIViewController{

    IBOutlet UILabel*label1;
    IBOutlet UILabel*label2;
    IBOutlet UILabel*label3;
    IBOutlet UILabel*label4;
    IBOutlet UILabel*label5;
    IBOutlet UILabel*label6;
    IBOutlet UILabel*label7;
    IBOutlet UILabel*label8;
    IBOutlet UILabel*label9;

    BOOL Player;

    int turn;

    IBOutlet UILabel*turnLabel;


}
@property (nonatomic)int turn;
@property (nonatomic) BOOL Player;
-(IBAction)PutSign1:(id)sender;
-(IBAction)PutSign2:(id)sender;
-(IBAction)PutSign3:(id)sender;
-(IBAction)PutSign4:(id)sender;
-(IBAction)PutSign5:(id)sender;
-(IBAction)PutSign6:(id)sender;
-(IBAction)PutSign7:(id)sender;
-(IBAction)PutSign8:(id)sender;
-(IBAction)PutSign9:(id)sender;
void setTurn();


@end

これは未完成の実装です

@implementation SinglePlayer
//Player=true = X
//Player=False= O
@synthesize Player;
@synthesize turn;

void setTurn(){
    SinglePlayer*SO=[[SinglePlayer alloc]init];

    SO .turn =1;
    if (SO.turn%2==0){
        SO->turnLabel.text=@"O Turn";

    }
    else SO->turnLabel.text=@"X Turn";
    SO.turn++;
}
//this code to put the sign in the button label:-
//[sender setTitle:@"X" forState:UIControlStateNormal];
-(IBAction)PutSign1:(id)sender{
    if (turn%2 !=0){
        label1.text=@"X";
    }
    else if (turn%2 ==0){
        label1.text=@"O";
    }
turnLabel.text=@"O Turn";
}
      putSign();
-(IBAction)PutSign2:(id)sender{
    if (turn%2 !=0){
        label2.text=@"X";
    }
    else if (turn%2 ==0){
        label2.text=@"O";

    }
}    
   putSign();

-(IBAction)PutSign3:(id)sender{
    if (turn%2 !=0){
        label3.text=@"X";
    }
    else if (turn%2 ==0){
        label3.text=@"O";

    }
}
 putSign();
-(IBAction)PutSign4:(id)sender{
    //[sender setTitle:@"X" forState:UIControlStateNormal];
}

putSign();
4

2 に答える 2

0

名前はめちゃくちゃになっています;)私はそれが無関係で重要ではないように聞こえることを知っていますが、私は「命名の力」を過小評価しません

コードの読み取り/書き込みがはるかに簡単になります


とにかく...あなたには関数がありません-あなたはオブジェクトに属するメソッドを持っています:その[OBJECT executeMyMethod:myParam];

于 2012-09-17T06:16:19.157 に答える
0

以下のようにメソッドを記述します。

-(void)setTurn
{
    SinglePlayer*SO=[[SinglePlayer alloc]init];

    SO .turn =1;
    if (SO.turn%2==0){
        SO.turnLabel.text=@"O Turn";

    }
    else SO.turnLabel.text=@"X Turn";
    SO.turn++;
}
于 2012-09-17T06:05:48.107 に答える