Minggu, 29 November 2009

Guest Posting is now available

Guest Posting is now available

Got the urge to blog and promote your latest innovation to the delivery to healthcare or to mobile computing?

Let us know.
We have several specialized sites that have a strong following:

Android Phone Blog
Blackberry Medicine Blog
EHR PHR Patient Portal PCMH Blog
iPhone Medicine Blog
Smartphone Medical Blog

World Series of Poker- Hold 'Em Legend



iTunes Link

World Series of Poker- Hold 'Em Legend is a poker game by Glu. $4.99

[This is a modified post from TheAppEra]

With the launch of the App Store can a great poker game by Apple themselves, which feature great graphics and strong reasons why it should be the only poker game you need to buy. Over a year later and I have finally found a poker game that I feel it worthy to share the limelight with Apple's Texas Hold 'Em. It just so happens that this game is also a fully licensed WSOP game.

Being a total Poker nut, even to the extent of winning a fair sized tournament and owning about three poker games for my Xbox 360 I feel like I know enough about the topic to review this game. When I picked up this game it was really about comparing it to Texas Hold 'Em by Apple. This game has some qualities that are better than Apple's attempt, but it is also been beaten in other areas. Overall though, taking into account what is important in a poker game, I believe WSOP: H'EL comes out trumps.

The main area where Texas Hold'em wins out is definitely the graphics department. Apple have filmed various people betting, calling, folding and all sorts of actions to watch as your turns go around. Even in horizontal mode I feel as if it looks better than WSOP. The closest WSOP gets to this are the short cut scenes when you have a sort of rival in various tables and the short movie of each hotel before you start playing a particular tournament.

You can only play WSOP horizontally and it looks basically the same compared to Texas Hold'Em, except with the graphics not as smooth and crisp as the earlier game. Also the game doesn't seem to be as responsive and quick compared to TH'E. If you are looking for a poker game that has better visuals and everything, this isn't the game for you. Luckily though poker games don't care too much about how snazzy it looks as it is all about how good the gameplay is, which is where WSOP really comes out on top.

The controls in this game are pretty simple really. The game plays out with other players betting and folding as they please, which can be fast forwarded straight to your turn with a single touch of the screen. When you get to your turn to bet you have to touch the table to bring up the betting screen. This can sometimes be frustrating as it doesn't come up straight away. Once it does pop up though you slide it to whatever amount you choose and press bet. If you want to check your cards you just double tap the screen, similar to double tapping the table in real poker to check.

Just like in TH'E there are some special tricks you can do to speed up certain processes. Whenever you want to fold you just touch your cards and flick them into the middle of the table. Also if you want to skip betting and go straight to going all in then you can do that by dragging your chip pile into the middle just like with the cards. This will automatically put you all in.

Gameplay is where this game really happens. Those who have it will know that TH'E has a few different tables that require you to win money from smaller tournaments to buy in and try your luck. In WSOP it is basically the same, yet in more detail. You start off the game most likely in Legend Career (A local and global multiplayer option is also available). This career mode lets you create a player to slowly work your way up the casino's to be the ultimate poker superstar. You start off with limited cash and really only one casino that you can play on. As you master that table and increase your cash amount you can progress until you get to the last hotel, with a heap of cash flowing out of your pockets.

WSOP has many different hotels to play in, with something I felt was missing from TH'E, different types of Texas Hold 'Em. While this game doesn't feature games like Omaha and 7 Stud Poker like the console version, it does have many different modes like Shootout and Winner Takes All. All these basically do is affect how much you can potentially win at the end of the day, but it can affect what game I will play depending on how strapped I am for cash.

The other great thing about this version is that Glu also has the rights to let us win one of the coveted WSOP bracelets that real life poker stars can win in major tournaments. These don't come easy but winning one is an achievement in itself. On that note there are also 20 achievements that can be achieved through playing the game. These are meaningless but a bit of fun to collect.

The main aim of WSOP is to get to the final hotel, with your eye on the main prize to win the WSOP main event. This is the hardest poker tournament in history, and will require a lot of cash from hard earned tournament wins and even more skill and luck combined to get you through for the victory.

Getting to this main table will probably be a dream for some of us poker wannabe's but there are hours of fun sucking at the smaller tables to be had none the less. Poker is a game I can play all day and the amount of new and riskier challenges in this game has even dragged me from my WSOP Xbox game and Zynga Poker on Facebook.

Like Poker and want something more challenging than Texas Hold'Em? Then this game is definitely for you. Countless hours of fun to be had. The only downside I found to this game was the lack of people wanting to play in the global multiplayer, which I found to never be able to connect me. I would stick to the Legend Career for now and just hope you don't get dealt a 2 7!

Gameplay- 9/10
Graphics- 7/10
Sound- 6.5/10
Overall- 7.5/10


I would recommend this game if you enjoyed- Texas Hold'Em

Tell me what you think about this review at Twitter- http://www.twitter.com/iPhone_Reviews next up is Skater Nation

Thanks- iPhone_Reviews

Selasa, 24 November 2009

Using KVO for Table Updates

If you've followed the guidelines in Apple's Model Object Implementation Guide when creating your data model objects, you can handle your UITableView updates using KVO. This frees you from having to spread calls to reloadData, insertRowsAtIndexPaths:withRowAnimation:, or deleteRowsAtIndexPaths:withRowAnimation: throughout your controller class wherever the data in your table might get changed.

Instead, all you have to do is observe the keypath on your data model object that holds the collection of items being displayed in the table. The easiest way to do that is in your table view controller's viewDidLoad method, like so:

    [self.data addObserver:self
forKeyPath:@"items"
options:0
context:NULL
]
;

Then, you just implement observeValueForKeyPath:ofObject:change:context to insert or remove rows based on changes to the observed collection. The information about which rows were inserted or deleted comes in the changes dictionary stored under the key NSKeyValueChangeIndexesKey. The information comes in the form of index sets, and those have to be converted to index paths in order to update the table. But that's the only thing about this code that isn't fairly straightforward, and this implementation is fairly generic, so you should be able to pretty much copy and paste it into your controller if you want to use it.

If you do do this, make sure you remove all the other remove and insert calls, otherwise you will double-delete and double-insert, which will cause errors at runtime.

- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
NSIndexSet *indices = [change objectForKey:NSKeyValueChangeIndexesKey];
if (indices == nil)
return; // Nothing to do


// Build index paths from index sets
NSUInteger indexCount = [indices count];
NSUInteger buffer[indexCount];
[indices getIndexes:buffer maxCount:indexCount inIndexRange:nil];

NSMutableArray *indexPathArray = [NSMutableArray array];
for (int i = 0; i < indexCount; i++) {
NSUInteger indexPathIndices[2];
indexPathIndices[0] = 0;
indexPathIndices[1] = buffer[i];
NSIndexPath *newPath = [NSIndexPath indexPathWithIndexes:indexPathIndices length:2];
[indexPathArray addObject:newPath];
}


NSNumber *kind = [change objectForKey:NSKeyValueChangeKindKey];
if ([kind integerValue] == NSKeyValueChangeInsertion) // Rows were added
[self.tableView insertRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationFade];
else if ([kind integerValue] == NSKeyValueChangeRemoval) // Rows were removed
[self.tableView deleteRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationFade];

}

Once you've done this, you can forget about reloading your table. Any changes made to the underlying data - even changes made on other threads (assuming your data model class is thread-safe) will automatically trigger an animated deletion or insertion. Although the code above may look a little intimidating, this actually allows a much cleaner overall design.

I've created a fairly simple Xcode project that illustrates using KVO to update a table view.

Sabtu, 21 November 2009

NBA Live

nba-live-iphone-01

iTunes Link

NBA Live is a basketball game by Electronic Arts. $9.99

[This is a modified post from TheAppEra]

First of all I feel extremely privileged to even review this game, with James being perhaps the biggest Lakers fan of all time (Except this guy or even this guy). For a long long time we have been waiting for NBA Live, since Electronic Arts announced their 2009 line up back around March. Now it has arrived, and boy isn't it NOICE!

Being a long time fan and player of Basketball there was nothing more that I wanted on my iPod than this. First of all the game lets you use all NBA teams and players in the full 82 game season. The game itself are very fun and have good use of the touch screen by using a minimal number of buttons to play.

There is no better feeling than hitting down a big 3 pointer or dunking the ball over the top of another opponent and this game successfully recreates all of it. All aspects of the game are covered and plays almost like a real NBA game with no super skills or tricks possible. The Lakers are also a good team which isn't hard to believe ;)

The graphics probably aren't the best they could be, but as far as I know it is to keep the performance of the game at a respectable level on all devices. The players aren't up to the standard of their other games like Madden 10, but I found even without looking at the names I could successfully distinguish who was who on the court. Each of the courts have been personalized for each team with their logo's splattered all over the arena.

This game has managed to smash a heap of different controls into two buttons plus a D-Pad and tactics board. On the left side of the screen is a floating D-Pad which lets you control your player. There are two buttons, one blue and one red. While in offense one button lets you pass the ball and the other lets you shoot the ball. To pass the ball you can just touch it once and it will pass the ball to the nearest player or you can hold onto the button then touch whatever player you want to pass it to. To shoot the ball it is best to hold it down while you jump up and let go at the top of your flight for the best percentage shot.

To pump fake you just touch the shoot button quickly. When shooting free throws you get to tilt your device backwards to lift the ball and flick it forward to shoot the ball, kind of like SGN's free game iBasketball. The passing button can also be flicked up, down, left or right which let's you do or fake your opponent while dribbling the ball which can be handy to get around them. To dunk the ball all you have to do is press the shoot button when the player is near the ring, which can be known if their circle turns entirely green.

While in defense the buttons let you either try to steal the ball or block a shot. I found defense to be the least effective part of the game as your circle tells blue when you can successfully steal the ball and red when you can successfully block a shot. Apart from that it's a hit and miss thing that may or may not work. In each part of the game you can use tactics and plays to score or have a successful defense, these can be changed each play.

This game is just like playing basketball (surprise!). You can play in either exhibition mode, season mode or skip it all and go straight to the playoffs. Each of these games can be played with one of three difficulty levels and various quarter times.

I found the game quite a challenge while on medium, which is good to see that it isn't really easy to defeat. The game plays and feels like a basketball game which is good to see. Each of the players have different traits that represent their real life selves. For example when playing with the Lakers I found Kobe Bryant is more likely to hit a 3 pointer than say Pau Gasol in the same position because he is more often than not in the paint.

EA has done a great job on making this game as good as possible, but if I was to suggest anything I would love a more intense defense, not only on my side of the game but from the opposition as well. They seem to just sit and wait for me to make a play and I would like to see some more attacking defense. This game has loads of replayabilty for you as it will take days upon days to finish the 82 game season and the playoffs. While $9.99 may seem like a hefty price just think of all the game time you will get out of this.

This is a not to miss game for all basketball fans and should also provide enjoyment for the less unsporty. With the added incentive of unlockable legends of NBA teams' past, this should appeal to those who are fans of Kobe Bryant, LeBron James or even classics like Magic Johnson.

If I was you I wouldn't miss out on this game, it will be one of your favourites for months to come. Now I have better get back to the game otherwise Dwight Howard might blow me out of the water... Unlikely ;)

Gameplay- 10/10
Graphics- 9/10
Sound- 10/10
Overall- 9.5/10


I would recommend this game if you enjoyed- Streetball

Tell me what you think about this review at Twitter- http://www.twitter.com/iPhone_Reviews next up is World Series of Poker Hold 'Em Legend

Thanks- iPhone_Reviews

Jumat, 20 November 2009

Asphalt 5

asphalt-5-1

iTunes Link

Asphalt 5 is a racing game by Gameloft. $6.99

[This is a modified post from TheAppEra]

Early in the App Store's career we had one game that was a standout at the time, Asphalt 4: Elite Racing. But with the release of the latest Asphalt game we find that game blown out of the water with a faster, shinier and meaner Asphalt 5.

I absolutely loved Asphalt 4 to bits, thinking it was about as good as iPhone games could go (hell was I wrong). Asphalt 5 is Gameloft's latest version, a game that has been announced for some time. They have basically stripped Asphalt 4 and improved the game on almost every level possible, putting a racing game out that is finally in the same league at NFS: Undercover and Real Racing.

After Asphalt 4 I was expecting at least an improvement when Ferrari GT came out, getting a game that I found worse than Asphalt 4. The frame rate of the game has improved immensely, even though it still isn't up to NFS standards, but it heaps better than the previous version. Everything from the controls to the track layouts have been improved to be more fun and thrill for the user.

I found Asphalt 4 to have some sweet graphics, which I soon found out aren't sweet at all for this type of device. Asphalt 5 however has made great improvements to this area of the game, making more realistic graphics and just an all round better looking game. While the game has made improvements I still can't put this game at the same level as NFS and Real Racing, but it certainly matches it with the other good racing games like Fast & Furious and Fastlane Street Racing.

The one thing that lacks in this game is a decent frame rate for the game. This in the end is the difference between this being an A grade and an A+ game. The game runs fine at the current frame rate on my iPod Touch 1st Gen, and even if it was bumped up on the 3GS and 3rd Gen Touch then it would at least make the game better for some of our community. Really though, overall this is a great looking game which can be seen just from looking at some of the screenshots from the game.

The controls in Asphalt 5 are basically the same to this and every other racing game on the App Store. The game is set to auto acceleration but can be changed to an accelerate button, but the rest of the game is controlled by you. The game wrecker in Asphalt 4 was the dodgy and VERY VERY VERY annoying drifting that came on if you tilted the device at all, basically drifting around any corner. The drifting is turned on by pressing the brake while going around the corner and can be turned off be re-braking or using nitro, making the drifting process easier and more fun.

To use nitro you just touch the nitro button, with it going up in 3 modes of speed. The car can be moved around the course by tilting your iDevice and braking can be done by pressing the brake button on the left of the screen. Even though the controls are basically the same they are certainly improved from Asphalt 4, with the drifting making all the difference.

Asphalt 5 is all about two game modes, career and online. There is also a quick play mode but you may as well play the career mode and earn new cars. There are 12 locations to race in with 4 different game types per location. The races can be completed in 33 super cars that are from big names like Ferrari, Audi and more.

The career mode is very fun and will take you multiple hours to complete. The locations are slowly unlocked as you complete tracks, but as has been widely broadcasted the Cop Chase mode wrecks the game. This mode is extremely hard and I have not been able to continue any further because I can't beat this mode.

The other modes range from a 3 lap race to a time trial or even a cash race to try and earn enough cash in the 3 laps. There are 8 modes in total with some new additions and add-ons to the modes in Asphalt 4. The entire list includes race, cash attack, last man standing, cop chase, time trial, drift race, duel mode and escape. These are provide a nice challenge but nothing compared to Cop Chase.

The other new mode is online mode which pits you against up to 7 other real players around the world. This mode works quite well but has a few glitches like extremely jumpy cars, and you can tell why they didn't implement it earlier this year with Ferrari GT. As a basic online mode for a racing game it works well though and can be an enjoyable experience, if you have a fast car.

This game has taken huge leaps from the dawn of Gameloft in the App Store, and the progression has paid off greatly. This is a sweet racing game that you can find yourself happy playing time after time. Gameloft have stated that they are working on fixing the cop chase mode so the average gamer can complete it and they are still making a decision whether to incorporate the previous idea of DLC maps and cars.

At $6.99 this game is dearer than both Need for Speed and Real Racing and I would recommend them everytime. If you have both of them then this is definitely option #3 for racing games and has enough content for the price, seeing as we got less with Asphalt 4 for $9.99. I was extremely impressed with this title and hope to finish it when/if Gameloft put a fix out for the cop chase mode.

Gameplay- 8/10
Graphics- 9.5/10
Sound- 8.5/10
Overall- 8.5/10


I would recommend this game if you enjoyed- Need for Speed: Undercover

Tell me what you think about this review at Twitter- http://www.twitter.com/iPhone_Reviews next up is NBA Live

Thanks- iPhone_Reviews

Private APIs

Fast with the late-breaking news, Gizmodo is reporting that Apple is now scanning submissions for illegal use of private APIs.. Really? Oh, no!

Only, this, um… isn't exactly new. This was already happening, and was already pretty widely known about three weeks ago.

Kamis, 19 November 2009

Update to the MPMediaItemCollection Category

While testing and debugging, I made a few tweaks to this category. I still haven't added reordering, but I think the methods that are here are now pretty solid. If you downloaded the earlier one, you probably want to grab the updated version, as it now codes defensively so problems aren't caused when a collection becomes empty by deletion (media item collections can't be created without at least one media item).

MPMediaItemCollection-Utils.h
#import <Foundation/Foundation.h>
#import <MediaPlayer/MediaPlayer.h>

@interface MPMediaItemCollection(Utils)
/** Returns the first media item in the collection
*/

- (MPMediaItem *)firstMediaItem;

/** Returns the last media item in the collection
*/

- (MPMediaItem *)lastMediaItem;

/** This method will return the item in this media collection at a specific index
*/

- (MPMediaItem *)mediaItemAtIndex:(NSUInteger)index;

/** Given a particular media item, this method will return the next media item in the collection.
If there are multiple copies of the same media item in the list, it will return the one
after the first occurrence.
*/

- (MPMediaItem *)mediaItemAfterItem:(MPMediaItem *)compare;

/** Returns the title of the media item at a given index.
*/

- (NSString *)titleForMediaItemAtIndex:(NSUInteger)index;

/** Returns YES if the given media item occurs at least once in this collection
*/

- (BOOL)containsItem:(MPMediaItem *)compare;

/** Creates a new collection by appending otherCollection to the end of this collection
*/

- (MPMediaItemCollection *)collectionByAppendingCollection:(MPMediaItemCollection *)otherCollection;

/** Creates a new collection by appending an array of media items to the end of this collection
*/

- (MPMediaItemCollection *)collectionByAppendingMediaItems:(NSArray *)items;

/** Creates a new collection by appending a single media item to the end of this collection
*/

- (MPMediaItemCollection *)collectionByAppendingMediaItem:(MPMediaItem *)item;

/** Creates a new collection based on this collection, but excluding the specified items.
*/

- (MPMediaItemCollection *)collectionByDeletingMediaItems:(NSArray *)itemsToRemove;

/** Creates a new collection based on this collection, but which doesn't include the specified media item.
*/

- (MPMediaItemCollection *)collectionByDeletingMediaItem:(MPMediaItem *)itemToRemove;

/** Creates a new collection based on this collection, but excluding the media item at the specified index
*/

- (MPMediaItemCollection *)collectionByDeletingMediaItemAtIndex:(NSUInteger)index;

/** Creates a new collection, based on this collection, but excluding the media items starting with
(and including) the objects at index from and ending with (and including) to.
*/

- (MPMediaItemCollection *)collectionByDeletingMediaItemsFromIndex:(NSUInteger)from toIndex:(NSUInteger)to;
@end



MPMediaItemCollection-Utils.m
#import "MPMediaItemCollection-Utils.h"

@implementation MPMediaItemCollection(Utils)
- (MPMediaItem *)firstMediaItem {
return [[self items] objectAtIndex:0];
}


- (MPMediaItem *)lastMediaItem {
return [[self items] lastObject];
}


- (MPMediaItem *)mediaItemAtIndex:(NSUInteger)index {
return [[self items] objectAtIndex:index];
}


- (MPMediaItem *)mediaItemAfterItem:(MPMediaItem *)compare {
NSArray *items = [self items];

for (MPMediaItem *oneItem in items) {
if ([oneItem isEqual:compare]) {
// If last item, there is no index + 1
if (![[items lastObject] isEqual: oneItem])
return [items objectAtIndex:[items indexOfObject:oneItem] + 1];
}

}

return nil;
}


- (NSString *)titleForMediaItemAtIndex:(NSUInteger)index {
MPMediaItem *item = [[self items] objectAtIndex:index];
return [item valueForProperty:MPMediaItemPropertyTitle];
}


- (BOOL)containsItem:(MPMediaItem *)compare {
NSArray *items = [self items];

for (MPMediaItem *oneItem in items) {
if ([oneItem isEqual:compare])
return YES;
}

return NO;
}


- (MPMediaItemCollection *)collectionByAppendingCollection:(MPMediaItemCollection *)otherCollection {
return [self collectionByAppendingMediaItems:[otherCollection items]];
}


- (MPMediaItemCollection *)collectionByAppendingMediaItems:(NSArray *)items {
if (items == nil || [items count] == 0)
return nil;
NSMutableArray *appendCollection = [[[self items] mutableCopy] autorelease];
[appendCollection addObjectsFromArray:items];
return [MPMediaItemCollection collectionWithItems:appendCollection];
}


- (MPMediaItemCollection *)collectionByAppendingMediaItem:(MPMediaItem *)item {
if (item == nil)
return nil;

return [self collectionByAppendingMediaItems:[NSArray arrayWithObject:item]];
}


- (MPMediaItemCollection *)collectionByDeletingMediaItems:(NSArray *)itemsToRemove {
if (itemsToRemove == nil || [itemsToRemove count] == 0)
return [[self copy] autorelease];
NSMutableArray *items = [[[self items] mutableCopy] autorelease];
[items removeObjectsInArray:itemsToRemove];
return [MPMediaItemCollection collectionWithItems:items];
}


- (MPMediaItemCollection *)collectionByDeletingMediaItem:(MPMediaItem *)itemToRemove {
if (itemToRemove == nil)
return [[self copy] autorelease];

NSMutableArray *items = [[[self items] mutableCopy] autorelease];
[items removeObject:itemToRemove];
return [MPMediaItemCollection collectionWithItems:items];
}


- (MPMediaItemCollection *)collectionByDeletingMediaItemAtIndex:(NSUInteger)index {
NSMutableArray *items = [[[self items] mutableCopy] autorelease];
[items removeObjectAtIndex:index];
return [items count] > 0 ? [MPMediaItemCollection collectionWithItems:items] : nil;
}


- (MPMediaItemCollection *)collectionByDeletingMediaItemsFromIndex:(NSUInteger)from toIndex:(NSUInteger)to {

// Ensure from is before to
if (to < from) {
NSUInteger temp = from;
to = from;
from = temp;
}


NSMutableArray *items = [[[self items] mutableCopy] autorelease];
[items removeObjectsInRange:NSMakeRange(from, to - from)];
return [MPMediaItemCollection collectionWithItems:items];
}

@end

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Lady Gaga, Salman Khan