Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS Objective-C Basics Practicing with Immersive Examples Immersive example 1 - Ping-Pong

Ryan Maneo
Ryan Maneo
4,342 Points

Is it bad that I haven't the slightest clue where to start?

For the pingPong example, I honestly don't know where to start. I haven't watched how he did it, because I feel like I should know or be able to figure it out! Also, arc4random doesn't work... not sure why: "Too many arguments to function call, expected 0, have 1"

I've been trying to figure it out for DAYS now. Should I watch how he does it? Or would that be cheating and make me retain less information? :/

2 Answers

Steven Deutsch
Steven Deutsch
21,046 Points

Hey Ryan Minnick,

I definitely think trying to work something out on your own is a great learning experience. However, after a certain point it just makes more sense to move forward. As long as you gave it a valiant effort, sometimes just accepting the answer is the right solution. You wouldn't believe how many things I was hung up on for weeks while learning and just moved for them for them to click on their own later.

As for arc4random not working, make sure you are using:

int winner = arc4random()%2 + 1;

This version of arc4random doesn't accept any parameters so to achieve a result of 1 of 2 numbers you need to do a modulo on the resulting number. This is essentially a check between even or odd. I just add a 1 to the result to make it more readable and discard the zero base. Instead of 0 or 1 as results, our possible results are now 1 or 2. I think this correlates better to player 1 and player 2.

OR

UInt32 upperbound = 2;
int winner = arc4random_uniform(upperbound) +1;

Using arc4random_uniform will return a random number less than the specified upper bound. So this will return us a number of 0 to 1 randomly. I add one to the result to make the code more understandable. If the number is 1 then player 1 won the round. If the number is 2 then player 2 wins the round.

Hopefully this is enough to let you move forward a bit. Good Luck!