0 Replies - 1344 Views - Last Post: 26 July 2011 - 09:06 PM

#1 over5  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 22
  • Joined: 06-November 09

Trying to make a room picks random?

Posted 26 July 2011 - 09:06 PM

I am writing this code where a player can enter different rooms, and i can not get it to give me a random room when I enter the bathroom. My code will build but this suggestion comes up and the program shuts down when i enter the bathroom.Here is the message i get / warning: incompatible Objective-C types 'struct NSArray *', expected 'struct Room *' when passing argument 2 of 'setExit::' from distinct Objective-C type/
here is my code
#import "GameWorld.h"


@implementation GameWorld

+(id)sharedInstance
{
	static GameWorld *theInstance = nil;
	if (!theInstance) {
		theInstance = [[[self class] alloc] init];
	}
	return theInstance;
}

-(id)init
{
	connections = [[NSMutableDictionary alloc] initWithCapacity:10];
	
	Room *livingroom, *hallway1, *kitchen, *mbedroom, *bedroom2, *bedroom3, *frontdoor, *hallway2, *bathroom, *stairs, *outside;
	
	self = [super init];
	if (self) {
		// Create the rooms
		outside = [[Room alloc] initWithDescription:@"outside of the house"];
		livingroom = [[Room alloc] initWithDescription:@"the livingroom"];
		kitchen = [[Room alloc] initWithDescription:@"in the kitchen"];
		mbedroom = [[Room alloc] initWithDescription:@"in the master bedroom"];
		bedroom2 = [[Room alloc] initWithDescription:@"in the second bedroom"];
		bedroom3 = [[Room alloc] initWithDescription:@"in the third bedroom"];
		hallway1 = [[Room alloc] initWithDescription:@"in the downstairs hallway"];
		hallway2 = [[Room alloc] initWithDescription:@"in the upstairs hallway"];
		frontdoor = [[Room alloc] initWithDescription:@"door to get outside"];
		bathroom = [[Room alloc] initWithDescription:@"in the bathroom"];
		stairs = [[Room alloc] initWithDescription:@"in the stairway"];
		
		outside.image = @"outside.jpg";
		livingroom.image = @"livingroom.jpg";
		kitchen.image = @"kitchen.jpg";
		frontdoor.image = @"frontdoor.jpeg";
		mbedroom.image = @"mbedroom.jpg";
		bedroom2.image = @"bedroom2.jpg";
		bedroom3.image = @"bedroom3.jpg";
		hallway1.image = @"hallway1.jpg";
		hallway2.image = @"hallway2.jpg";
		bathroom.image = @"bathroom.jpg";
		stairs.image = @"stairs.jpg";
		
		//Add items to the outside room
		[outside dropItem:[[[Item alloc] initWithName:@"Trees"] autorelease]];
		[outside dropItem:[[[Item alloc] initWithName:@"Bicycle"] autorelease]];
		[mbedroom dropItem:[[[Item alloc] initWithName:@"TV"] autorelease]];
		[mbedroom dropItem:[[[Item alloc] initWithName:@"shirts"] autorelease]];
		[bedroom2 dropItem:[[[Item alloc] initWithName:@"Bed"] autorelease]];
		[bedroom2 dropItem:[[[Item alloc] initWithName:@"Mirror"] autorelease]];
		[bathroom dropItem:[[[Item alloc] initWithName:@"bathtub"]autorelease]];
		[hallway1 dropItem:[[[Item alloc] initWithName:@"Picture"] autorelease]];
		[bedroom3 dropItem:[[[Item alloc] initWithName:@"trunk"] autorelease]];
		[hallway2 dropItem:[[[Item alloc] initWithName:@"Picture"] autorelease]];
		[bedroom3 dropItem:[[[Item alloc] initWithName:@"Dresser"] autorelease]];
		[kitchen dropItem:[[[Item alloc] initWithName:@"Fridge"]autorelease]];
		[livingroom dropItem:[[[Item alloc] initWithName:@"Chair"]autorelease]];
		[livingroom dropItem:[[[Item alloc] initWithName:@"TV"]autorelease]];
		[mbedroom pickupItem:@"Mirror"];
		
		
		// extra room to connect later
		//Room *room1 = [[Room alloc] initWithDescription:@"in the laundry room"];
		//Room *room2 = kitchen;
		//Room *trigger = hallway1;
		//NSString *exit1 = @"south";
		//NSString *exit2 = @"north";
		//NSArray *tempArray = [NSArray arrayWithObjects: room1, room2, exit1, exit2, nil];
		//[connections setObject:tempArray forKey:trigger];
		
		// another extra room to connect later
		Room *room1 = kitchen;
		Room *room2 = hallway1;
		Room *room3 = mbedroom;
		Room *room4 = bedroom2;
		Room *room5 = livingroom;
		NSArray *myArray = [NSArray arrayWithObjects:room1, room2, room3,room4, room5, nil];
		//[connections setObject:tempArray forKey:trigger];
		
		
		//add observer to NSNotificationCenter
		[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(makeConnection:) name:@"playerDidEnterRoom" object:nil];
		
		
		// Initialize room exits
		[outside setExit:@"east" :frontdoor];
		
		[frontdoor setExit:@"east" :livingroom];
		[frontdoor setExit:@"west" :outside];
		
		[livingroom setExit:@"west" :frontdoor];
		[livingroom setExit:@"north" :hallway1];
		[livingroom setExit:@"east" :kitchen];
		
		[kitchen setExit:@"west" :livingroom];
		
		[hallway1 setExit:@"north" :mbedroom];
		[hallway1 setExit:@"east" :stairs];
		[hallway1 setExit:@"south" :livingroom];
		
		[mbedroom setExit:@"south" :hallway1];
		
		[stairs setExit:@"up" :hallway2];
		[stairs setExit:@"down" :hallway1];
		
		[hallway2 setExit:@"north" :bedroom2];
		[hallway2 setExit:@"east" :bathroom];
		[hallway2 setExit:@"south" :bedroom3];
		[hallway2 setExit:@"west" :stairs];
		
		[bedroom2 setExit:@"south" :hallway2];
		
		[bathroom setExit:@"west" :myArray];
		
		[bedroom3 setExit:@"north" :hallway2];
		
		[hallway1 release];
		[kitchen release];
		[mbedroom release];
		[bedroom2 release];
		[bedroom3 release];
		[frontdoor release];
		[hallway2 release];
		[bathroom release];
		[stairs release];
		
		// Stores the entrance room
		entrance = livingroom;
		
	}
	return self;
}


-(Room *)getEntrance
{
	return entrance;
}

-(void)makeConnection:(NSNotification *)notification
{
	Player *thePlayer = [notification object];
	NSArray *action = [connections objectForKey:[thePlayer currentRoom]];
	
	if (action) {
		NSLog(@"\nI got action!\n");
		[[action objectAtIndex:0] setExit:[action objectAtIndex:3] :[action objectAtIndex:1]];
		[[action objectAtIndex:1] setExit:[action objectAtIndex:2] :[action objectAtIndex:0]];
		[connections removeObjectForKey:[thePlayer currentRoom]];
		if ([connections count] == 0) {
			[[NSNotificationCenter defaultCenter] removeObserver:self];
		}
		//[connectingRoom setExit:@"south" :extraRoom];
		//[extraRoom setExit:@"north" :connectingRoom];
		//[[NSNotificationCenter defaultCenter] removeObserver:self];
	}
}

-(void)dealloc
{
	[entrance release];
	[connections release];
	
	[super dealloc];
}
@end


Is This A Good Question/Topic? 0
  • +

Page 1 of 1