objective c - How can i repeat a code code after a delay -
i'm trying make game have fly through cave, , pick object gives points. want bonus image repeat several times while playing. have tried using code tell me hide object, can't see anymore, can still pick while it's hidden...
i thought repeating "corona", how?
please me :)
here .m file:
#import "viewcontroller.h" @interface viewcontroller () @end @implementation viewcontroller -(void)collision{ if (cgrectintersectsrect(heli.frame, obstacle.frame)) { [self endgame]; } if (cgrectintersectsrect(heli.frame, obstacle2.frame)) { [self endgame]; } if (cgrectintersectsrect(heli.frame, bottom1.frame)) { [self endgame]; } if (cgrectintersectsrect(heli.frame, top1.frame)) { [self endgame]; } } -(void)endgame{ if (scorenumber > highscore) { highscore = scorenumber; [[nsuserdefaults standarduserdefaults] setinteger:highscore forkey:@"highscoresaved"]; } heli.hidden = yes; [timer invalidate]; [scorer invalidate]; [self performselector:@selector(newgame) withobject: nil afterdelay:2]; } -(void)newgame{ if([uidevice currentdevice].userinterfaceidiom == uiuserinterfaceidiomphone) { bottom1.hidden = yes; top1.hidden = yes; obstacle.hidden = yes; obstacle2.hidden = yes; corona.hidden = yes; intro1.hidden = no; intro2.hidden = no; intro3.hidden = no; heli.hidden = no; heli.center = cgpointmake(88, 286); heli.image = [uiimage imagenamed:@"buss til app.png"]; start = yes; scorenumber = 0; score.text = [nsstring stringwithformat:@"score: 0"]; intro3.text = [nsstring stringwithformat:@"highscore: %i", highscore]; } else { //ipad bottom1.hidden = yes; top1.hidden = yes; obstacle.hidden = yes; obstacle2.hidden = yes; corona.hidden = yes; intro1.hidden = no; intro2.hidden = no; intro3.hidden = no; heli.hidden = no; heli.center = cgpointmake(153, 516); heli.image = [uiimage imagenamed:@"buss til app.png"]; start = yes; scorenumber = 0; score.text = [nsstring stringwithformat:@"score: 0"]; intro3.text = [nsstring stringwithformat:@"highscore: %i", highscore]; } } -(void)helimove{ if([uidevice currentdevice].userinterfaceidiom == uiuserinterfaceidiomphone) { [self collision]; heli.center = cgpointmake(heli.center.x, heli.center.y + y); obstacle.center = cgpointmake(obstacle.center.x -4, obstacle.center.y); obstacle2.center = cgpointmake(obstacle2.center.x -4, obstacle2.center.y); bottom1.center = cgpointmake(bottom1.center.x -4, bottom1.center.y -0); top1.center = cgpointmake(top1.center.x -4, top1.center.y -0); corona.center = cgpointmake(corona.center.x -4, corona.center.y ); if (obstacle.center.x < -90) { randomposition = arc4random() %200; randomposition = randomposition + 200; obstacle.center = cgpointmake(400, randomposition); } if (obstacle2.center.x < 0) { randomposition = arc4random() %165; randomposition = randomposition + 600; obstacle.center = cgpointmake(300, randomposition); } if (top1.center.x <-95) { randomposition = arc4random() %80; top1.center = cgpointmake(410, 17); randomposition = randomposition + 495; bottom1.center = cgpointmake(420, 540); } if (corona.center.x <-90) { corona.center = cgpointmake(2100, 325); } } else { //ipad [self collision]; heli.center = cgpointmake(heli.center.x, heli.center.y + y); obstacle.center = cgpointmake(obstacle.center.x -10, obstacle.center.y); obstacle2.center = cgpointmake(obstacle2.center.x -10, obstacle2.center.y); bottom1.center = cgpointmake(bottom1.center.x -10, bottom1.center.y -0); top1.center = cgpointmake(top1.center.x -10, top1.center.y -0); corona.center = cgpointmake(corona.center.x -10, corona.center.y ); if (obstacle.center.x < -90) { randomposition = arc4random() %300; randomposition = randomposition + 400; obstacle.center = cgpointmake(900, randomposition); } } if (obstacle2.center.x < 0) { randomposition = arc4random() %300; randomposition = randomposition + 600; obstacle.center = cgpointmake(678, randomposition); } if (top1.center.x <-100) { randomposition = arc4random() %80; top1.center = cgpointmake(400, 30); randomposition = randomposition + 495; bottom1.center = cgpointmake(400, 990); } if (corona.center.x < -0) { corona.center = cgpointmake(900, 325); } } -(void)scoring{ scorenumber = scorenumber + 1; score.text = [nsstring stringwithformat:@"score: %i", scorenumber]; if (cgrectintersectsrect(heli.frame, corona.frame)) { scorenumber += 20; corona.hidden = yes; } } -(void)touchesbegan:(nsset *)touches withevent:(uievent *)event{ if (start == yes) { intro1.hidden = yes; intro2.hidden = yes; intro3.hidden = yes; timer = [nstimer scheduledtimerwithtimeinterval:0.02 target:self selector:@selector(helimove) userinfo:nil repeats:yes]; scorer = [nstimer scheduledtimerwithtimeinterval:0.1 target:self selector:@selector(scoring) userinfo:nil repeats:yes]; start = no; bottom1.hidden = no; top1.hidden = no; obstacle.hidden = no; obstacle2.hidden = no; obstacle3.hidden = no; obstacle4.hidden = no; obstacle5.hidden = no; obstacle6.hidden = no; obstacle7.hidden = no; obstacle8.hidden = no; obstacle9.hidden = no; corona.hidden = no; if([uidevice currentdevice].userinterfaceidiom == uiuserinterfaceidiomphone) { randomposition = arc4random() %150; randomposition = randomposition + 397; obstacle.center = cgpointmake(570, randomposition); randomposition = arc4random() %75; randomposition = randomposition + 259; obstacle2.center = cgpointmake(855, randomposition); corona.center = cgpointmake(1400, 400); } else{ //ipad randomposition = arc4random() %400; randomposition = randomposition + 1300; obstacle.center = cgpointmake(570, randomposition); randomposition = arc4random() %75; randomposition = randomposition + 259; obstacle2.center = cgpointmake(855, randomposition); randomposition = arc4random() %55; corona.center = cgpointmake(900, 470); } } if([uidevice currentdevice].userinterfaceidiom == uiuserinterfaceidiomphone) { y = -7; heli.image = [uiimage imagenamed:@"buss til app.png"]; } else{ //ipad y = -12; heli.image = [uiimage imagenamed:@"buss til app.png"]; } } -(void)touchesended:(nsset *)touches withevent:(uievent *)event{ if([uidevice currentdevice].userinterfaceidiom == uiuserinterfaceidiomphone) { y = 7; heli.image = [uiimage imagenamed:@"buss til app.png"]; } else{ //ipad y = 12; heli.image = [uiimage imagenamed:@"buss til app.png"]; } } - (void)viewdidload { // highscore prefs. highscore = [[[nsuserdefaults standarduserdefaults] objectforkey:@"highscoresaved"] intvalue ]; intro3.text = [nsstring stringwithformat:@"highscore: %i", highscore]; start = yes; bottom1.hidden = yes; top1.hidden = yes; obstacle.hidden = yes; obstacle2.hidden = yes; obstacle3.hidden = yes; obstacle4.hidden = yes; obstacle5.hidden = yes; obstacle6.hidden = yes; obstacle7.hidden = yes; obstacle8.hidden = yes; obstacle9.hidden = yes; corona.hidden = yes; [super viewdidload]; // additional setup after loading view, typically nib. } - (void)didreceivememorywarning { [super didreceivememorywarning]; // dispose of resources can recreated. } @end
to repeat code after delay can use nstimer
.
create viewdidload
method , place nstimer
initialize code there:
-(void)viewdidload { [super viewdidload]; //then initialize timer nstimer *mytimer=[nstimer scheduledtimerwithtimeinterval:yourdelay target:self selector:@selector(yourselector:) userinfo:nil repeats:yes]; }
what need edit is:
yourdelay
- delay between timer firings, in seconds
repeats:yes
- defines whether timer repeats or not
@selector(yourselector:)
- method place code
then
-(void)yourselector:(nstimer*)timer { //your code here }
Comments
Post a Comment