我是Objective C的新手,也是程序员的一般世界(2或3周)。我也是意大利人,所以使用英语和正确的术语对我来说很难。
我创建了一个课程:" Mano" (手)及其实例和方法:m1和m2。
我的问题是:如何用m2读取m1变量值?
m1和m2例如" int a; A = 0;"
然后m1,执行一个方法,设置a = 10
m2如何阅读m1' s?如果m2简单地读取它自己读取a ... a = 0,对吗?
再次抱歉,但我不知道如何解释自己比这更好!
答案 0 :(得分:0)
基本上,如果它们不是同一种物体那么相同。首先,制作你想要阅读的内容:
// Hand.h
#import <Foundation/Foundation.h>
@interface Hand : NSObject
// Each hand maintains a value
@property (assign) int a;
// This makes it easy to show two Hands working together...not necesary
- (instancetype)initAsFirst:(BOOL)first;
@end
然后,使用对另一个对象的引用:
// Hand.m
#import "Hand.h"
@implementation Hand
// To start, some other object will call this with first set to YES.
- (instancetype)initAsFirst:(BOOL)first
{
self = [super init];
if (self) {
if (first) {
// The first Hand will create a second one to demonstrate the difference.
self.a = 0;
[self showHands:[[Hand alloc] initAsFirst:NO]];
} else {
// The second Hand will have a different value to prove that it's different.
self.a = 10;
}
}
return self;
}
- (void)showHands:(Hand *)h
{
// Display both the value of this hand (first) and the one this hand created (second)
NSLog(@"Mine: %d, Other: %d", self.a, h.a);
}
@end
答案 1 :(得分:0)
这是一个简单的RPS(Rock Paper Scissors)游戏,只是为了开始学习一点Objective C编程。最初有两个对象m1和m2作为“计算机手m1”和“玩家手m2”。
当然,你可以看到我加入了两种方法(计算机随机数和人数选择),这样所有的工作都只能由一个对象完成。
当方法被分割时,我在[verdetto](游戏结果)方法中遇到问题,因为m2(我的情况是jn)无法获得对象实例的正确值(我需要m1值)...
这就是我问你问题的原因!
这里有0 = Rock 1 = Scissors 2 = Paper
// File main.m
#import <Foundation/Foundation.h>
#import "mano.h"
int main(int argc, const char * argv[])
{
int contatore;
contatore = 1;
@autoreleasepool {
mano *m1;
m1 = [[ mano alloc ] init ];
// mano *m2;
// m2 = [[ mano alloc ] init ];
while (contatore <= 5) {
NSLog(@"\n Partita N. %d", contatore);
contatore++;
[m1 gioco];
[m1 controlloRisultato]; }
// [m1 generatoreRandom] RANDOM NUMBER GENERATOR to let the computer choose
// [m2 scelta numero]here the player was meant to choose bw 0,1,2.
[m1 verdetto]; //game results
}
return 0;
}
// File mano.h
#import <Foundation/Foundation.h>
@interface mano : NSObject {
NSArray *simboli; //Rock Scissors Paper
NSInteger casuale; // Random Number
NSInteger scelta; // Player Number
NSInteger computer; // CPU wins
NSInteger giocatore; // Player Wins
NSInteger pareggi; // Draws
}
- (void) gioco;
- (void) controlloRisultato;
- (void) verdetto;
// - (void) generatoreRandom
// - (void) scelta numero
@end
// File mano.m
#import "mano.h"
@implementation mano
- (id) init {
self = [super init];
casuale = 0;
scelta = 0;
simboli = [ [ NSArray alloc] initWithObjects: @"Sasso",@"Forbici",@"Carta", nil]; //questo va nella init, giustamente, altrimenti non vale per tutti i metodi.
return self; }
- (void) gioco {
scelta =0;
casuale =0;
casuale = arc4random_uniform(3); //il computer sceglie un numero
// L'utente fa la sua scelta qui sotto
do {
NSLog (@"\n \n Inserisci 0 per Sasso, 1 per Forbici, 2 per Carta");
scanf ("%ld", &scelta);
if (scelta >2 || scelta <0) NSLog (@" \n Hai inserito un numero NON VALIDO");
} while (scelta >2 || scelta <0);
}
- (void) controlloRisultato {
NSLog(@"\nIl computer ha scelto: %@", [simboli objectAtIndex:casuale]);
NSLog(@"\nTu hai scelto: %@", [simboli objectAtIndex:scelta ]);
switch (casuale) {
case (0):
if (scelta == 0) {
NSLog (@"\n È un pareggio!");
++pareggi;
break;}
else if (scelta == 1) {
NSLog (@"\n Il Computer Vince!");
++computer;
break;}
else if (scelta == 2) {
NSLog (@"\n Hai vinto!");
++giocatore;
break;}
case (1):
if (scelta == 0) {
NSLog (@"\n Hai Vinto!");
++giocatore;
break;}
else if (scelta == 1) {
NSLog (@"\n È un pareggio!");
++pareggi;
break;}
else if (scelta == 2) {
NSLog (@"\n Il computer Vince!");
++computer;
break; }
case (2):
if (scelta == 0) {
NSLog (@"\n Il computer Vince!");
++computer;
break; }
else if (scelta == 1) {
NSLog (@"\n Hai Vinto!");
++giocatore;
break; }
else if (scelta == 2) {
NSLog (@"\n È un pareggio");
++pareggi;
break;}
break;
default:
break;
}
}
- (void)verdetto {
NSLog(@"\n Vittorie giocatore: %ld", giocatore);
NSLog(@"\n Vittorie computer: %ld", computer);
NSLog(@"\n Pareggi: %ld", pareggi);
if (giocatore > computer) NSLog(@"\n Bravo! Hai vinto tu la partita!");
else NSLog(@"\n Hai perso! Il computer ha vinto la partita");
}
@end
答案 2 :(得分:0)
现在我有1个班级
@interface mani : NSObject
可能可以控制游戏结果。
和2个子类:
@interface computer : mani //for random number generator
@interface giocatore : mani //for player choosing number
现在我的问题是让第一堂课(mani)读取它的子类变量,然后做些什么来确定谁是赢家!仍然无法得到它是如何工作的,并且相信我,我正在阅读论坛和电子书!