More Related Content
Similar to Developing Mobile Games with Unity - Game Builder Lab Series
Similar to Developing Mobile Games with Unity - Game Builder Lab Series (20)
More from Hock Leng PUAH (20)
Developing Mobile Games with Unity - Game Builder Lab Series
- 1. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨!
”“’‘ h‰˜—u ‰’—k”—
€‰’—k”— —d—p ~ l‰u hw‰˜—’w m‘ k”“” –ˆ’“} q‰’—k”—g l‰m nn| hz g‰–t
q–”‰{‘eg wz‰˜—y‰“v‘xw ‰ˆ– m‰g‘ nm— ™m—‰v–‰u –e—–t h g‰–t
q™nm‰ ‰˜—’ ‰ˆ– s™‰˜—p
™nm“• ‰ˆ ‰”mr q™‰˜—p e‘• ’m“k‘‘ ‰o—˜ ‰ˆ– nmj‘e— ’m“k—l ‰kji h‰g˜“™ fe‰d ™“ ‰˜—’ ‰ˆ– •‘ ”“’‘ ‰ˆ‡
vuqe v†v…„uwƒ ‚q €yxwp vuqe tsh rqpihgfed
assistance of game builder and visual mobile designer.
This 2nd lab series will take you through the process of developing a mobile game with the
10c2ba`0Y21X
¢W §V £(U ¤Q £ §¤T§ BBSR D $ (§ Q P
¨ £¦# # # £¥¤( § (¦¨¤£ ¨ # I $HBDCBA¡© o
§ ( ¨ § G£ £¦# F #¦¥ # # ( ¤# £¦ ¨ ¨§¦E $5BDCBA¡© o
§ §¦ § § ( £¥ # # ( ¤# §¨¦ ¡ £¦¤© £¦ ¨§¦E $AB DCBA¡© o
$ £¦ ¨ § @¡©9 §¨¦ £¦¤ £¦¢ ¨§¦ ¨ £¦¤ ¥¤£ ¢ ¤# 8¤ §¤ ¦ 765 •
4213210)
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 2. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨! z
'¨§¦ ¦# ¤Q ¤ # ¤§¨
‰’—k”—g ‰˜—’ ‘–m“ ‰“• m‰d“’ ‰ˆ– nn| hQ g‰–t
'¨§¦ ¦# ¤Q ¤ # ¤§¨
‰’—k”—g ”“’‘ ‘–m“ ™‰“• z m‰d“’ ‰ˆ– nn| h g‰–t
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 3. §¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
–‰i x—j™“F ‘– ™‰n‘” —m‘“–“nn— nn| hR g‰–t
ql‰“d ¡‰”ej‘tT ‘– ˆ”–“l™ nm— —d—{q–‰i x—j™“F m‘ k”“” ‰vj‘n sl‘nm“l ™–”‰{‘e m
–™— ‰ˆ– ‰e‘•‰v ™‰n‘” ’m“l‘‘• ‰ˆ– nn| W q‰”ej‘™ ‰ˆ– •‘ nm‰ ‰ˆ– –—
// Additional codes for game over and error mesage
/**
* Converts an exception to a message and displays
* the message..
*/
public void errorMsg(Exception e) {
e.printStackTrace();
if (e.getMessage() == null) {
getAlert().setString(e.getClass().getName());
switchDisplayable(getAlert(), getSvgMainMenu().getSvgCanvas());
alert = null;
} else {
getAlert().setString(e.getClass().getName() + : + e.getMessage());
switchDisplayable(getAlert(), getSvgMainMenu().getSvgCanvas());
alert = null;
}
}
/**
* set all the things up when the game is over
* @param score
*/
private GameThread myGameThread;
public void gameOver(int score) {
lastHighScore = score;
getScoreTextField().setString(Integer.toString(score));
if (myGameThread != null) {
myGameThread.requestStop();//pause();
}
}
/**
* updates the svg score table image with the high scores
*/
protected void updateSvgWithHighScores() {
for (int i = 0; i highScoreNames.length; i++) {
getSvgScoresTable().setTraitSafely(Name + (i + 1), #text, highScoreNames[i]);
getSvgScoresTable().setTraitSafely(Score + (i + 1), #text, Integer.toString(highScoreValues[i]));
}
}
private final int HIGH_SCORES = 9;
private String[] highScoreNames = {Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty, Empty};
private int[] highScoreValues = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0};
private int lastHighScore = 0;
/**
* can the high score be add to the high score table?
* @return
*/
protected boolean isLastScoreHighEnough() {
if (lastHighScore highScoreValues[highScoreValues.length - 1]) {
return true;
}
return false;
}
/**
* this method is used only when the game is in OFFLINE mode (ONLINE == false)
* adds the high score to high score table
* @param newScore value
* @param playerName
*/
public void addScoreToScoreTable(int newScore, String playerName) {
int buble = newScore;
String bubleName = playerName;
//this is simple buble sort
for (int i = 0; i highScoreValues.length; i++) {
if (highScoreValues[i] == 0) {
highScoreNames[i] = bubleName;
highScoreValues[i] = buble;
break; //we expect that the rest are nulls
}
if (buble highScoreValues[i]) {
¨! %¤('#¤¥¨¤£'¨¨¥%%$¥##
- 4. §¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
int temp = highScoreValues[i];
String tempName = highScoreNames[i];
highScoreValues[i] = buble;
highScoreNames[i] = bubleName;
buble = temp;
bubleName = tempName;
}
}
}
/**
* this method is used only when the game is in ONLINE mode (ONLINE == true)
* updates the high score table with data from the web service
* @param scores
*/
void updateHighScoresTable(String [] scores) {
for (int i = 0; i scores.length; i++) {
int split = scores[i].indexOf(':');
highScoreNames[i] = scores[i].substring(0, split);
highScoreValues[i] = Integer.parseInt(scores[i].substring(split + 1, scores[i].length()));
}
}
he‘ee‰ ‰m‘ ˆ–“l –•‰ ‰v nj‘ˆ™ j‘f nm— — ‰d—t
¡ # '(¦¨¤£' ¨ ¤Q #¤¥¦ I¡ #( £ § £#¨¦£ # §¤ (¦£P
'¤ ¤ ¤§ ££¦8 # § ££ ¢V
¨! Q %¤('#¤¥¨¤£'¨¨¥%%$¥##
- 5. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨! R
q™n‘ˆ–‰˜
¡ ‰˜j™‰e nm— ¡ ‰™j—g s¡ mje ‰ˆ– —“d ¡™—dm—¤‰o—x m“ ‰˜—’ ‰ˆ– •‘ m‘“–j”‰D‰ ‰ˆ– ™‘e–m‘” n—‰eˆ‡‰˜—y qz
qm‘“–—˜“m— ‰–“eg™ ‰kjn ‰ˆ– ™‘e–m‘” ¡ ‰–“egt‰–—ngj T
q‰m‰”™ ‰ˆ– m“ ‰–“eg™ ™‰kjn ‰ˆ– •‘ –m‰˜‰d‘˜ ‰ˆ– ™‘e–m‘” ¡ ‰d‘x–™‰j1‰e T
he‰’—m—˜ e‰f— ‰ˆ– ™“ e‰’—m—x‰o—x q
q™—dm—¤‰o—x ‰ˆ– nm— n—‰eˆ‡‰˜—y ‰ˆ– se‰’—m—x‰o—x
‰ˆ– •‘ ™”“’‘ ‰ˆ– nm—–™e‰nmj ‘– –‰’ ‘– ™‰“• n‰nn— ‰‰eˆ– ‰ˆ– ˆ’j‘eˆ– k‘‘ ‘– ‰˜“– ‰˜‘™ nm‰gt
(’m“‘n ™‰“• ‰™‰ˆ– ‰e— –—ˆX
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 6. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨! d
€ ‰––‰— ‘– nn| m‘ k”“¤
w€ e‰’—m—x ‰––‰—w –”‰‰™ nm— k”“” –ˆ’“e sl‘nm“l ‰––‰— ‰ˆ– m
ql‰“d ¡l‘T ‘– ˆ”–“l™ nm— —d—{q–‰i x—j™“F m‘ k”“” ‰vj‘n sl‘nm“l ™–”‰{‘e m
–m‰m‘g˜‘” ˜‘–™j” — ™— ‰––‰—g ‰ˆ– ‘– ™—dm—¤‰o—x nn| hd g‰–t
23§¨X# §¢a¥c¦ 3 2 02 ¥¢¤1¢)3£¢¡ 3 2 ``
'G£¨§¦¤(( #§ ¢¤ ¤Q £¦¢ #¥ § G ( ( G ( ( ( T
' # ¥ ¤( # #¦8 @§ ¨9 # £¡©£¦ ¤# §# @9 ¢U # T
h ™—dm—” ‰˜—’ ‰ˆ– ™“ ™—dm—¤‰o—x q
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 7. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨! f
h–‰’ “l j‘g nm— e‰’—m—x ‰––‰— ‰ˆ– ‰™‘¤
™—dm—¤‰o—xq‰˜—’ h™‰™™—¤ –”‰‰t
z‰˜—y‰“v‘x h–”‰{‘e –”‰‰t
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 8. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨! h
l‰“d ¡l‘T —d—{q–‰i x—j™“F ‰ˆ– ‘–m“ ™—dm—¤‰o—x g‘en nm— ’—ei
sl‘nm“l ‰––‰— ‰ˆ– ˜‘e hf g‰–t
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 9. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨! i
™“ˆ– hm‘“™™‰egD7 —d—p
m‘ k”“¤ h ¡ e‘–”je–™m‘” q –‰n“˜
™‰“–e‰g‘e –”‰‰™ nm— k”“”p–ˆ’“}
™—dm—¤‰o—˜ –”‰‰t
l‰“d ¡l‘T —d—{q–‰i x—j™“F m hh g‰–t
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 10. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨ ! ¡
h™—dm—¤‰o—˜ ‘– ’—en nm— k”“¤
¡)˜‰– jm‰˜ ~ jm‰xm“—x’d™ –”‰‰t hi g‰–t
‰™‘¤ k”“¤
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 11. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨ !
hn—‰eˆ– — ™— ‰˜—’ ™—dm—¤‰o—˜ ‰ˆ– –e—–™ ‘– n—‰eˆ‡‰˜—y ‰™j ‘– ™‰n‘” ’m“l‘‘• ‰ˆ– nn|
w‰”ej‘t ‘– ‘yw –”‰‰™ nm— k”“”p–ˆ’“}
¡)˜‰– jm‰˜ ~ jm‰xm“—x’d™ –”‰‰t
l‰“d ¡l‘T —d—{q–‰i x—j™“F m h¡ g‰–t
`¢3Y ¡3£¢¡ 02 23§¨X# §¢a¥c¦ 1c%
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 12. §¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
¥32cY §3¤3§ ¥2c `1¢ 1 c¥3¨3£¢¡ 3 2 02 ©¥¤¨¢§¢¦ ¥¤£¢¡0 Y3 ¢1¢#3%¢# 1c%
—d—{qe‰’—m—x‰o—x ‰ˆ– m‘ k”“” ‰vj‘n sl‘nm“l ™–”‰{‘e m h g‰–t
n‘ˆ–‰˜ ¡ –“m“ ‰ˆ– e‘• k‘‘
// Above init()
GameDesign mazeDesign; // lab03
pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp rr
// Inside init()
mazeDesign = new GameDesign(); // lab03
jamesSprite = mazeDesign.getJamesS(); // lab03
dukeSprite = mazeDesign.getDukeS(); // lab03
dukeSprite.defineReferencePixel(dukeSprite.getWidth() / 2, 0); // lab03
dukeSpriteAnimator = new SpriteAnimationTask(dukeSprite, false); // lab03
myWalls = mazeDesign.getMaze1(); // lab03
mazeDesign.updateLayerManagerForLevel1(this); // lab03
timer = new Timer(); // lab03
timer.scheduleAtFixedRate(dukeSpriteAnimator, 0, mazeDesign.dukeSseq001Delay); // lab03
h’m“l‘‘• ‰ˆ– –‰’ “l j‘g
he‘ee‰ ‰ˆ– n‰D“
vjvp–ˆ’“ ‰ˆ– m‘ k”“¤
wm’“™‰i‰˜—yq‰˜—’ e‘• –e‘g˜“ nn|w –”‰‰t
¨ ! z %¤('#¤¥¨¤£'¨¨¥%%$¥##
- 13. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨ !
¨§¦ ¤8 # G § ( ££Q #¤§
#¤§ ¤( ¨¦T § (V #¦U
£¦¦¢ #¤§
## # #¦U
¨§¤£ ¤¤# ## # q–”‰{‘eg ‰ˆ– mje nm— n“j¡ hz g‰–t
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 14. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨ ! Q
‰e‘”tl‰ue‰–™“’‰e h‰˜—u l‰u
w‰˜—m‰}w –”‰‰™ nm— wn‘ˆ–‰˜w m‘ k”“” –ˆ’“}
–‰i x —j™“F ‘– –m‰m‘g˜‘” w• ~ l‘w ‰ˆ– g‘en nm— ’—en sl‘nm“l ‰––‰— ‰ˆ– ˜‘e
l‰“d ¡l‘T —d—{q–‰i x—j™“F m
—d—{q–‰i x—j™“F m‘ k”“” ‰vj‘n sl‘nm“l ™–”‰{‘e ‰ˆ– m h g‰–t
3Y0b¥ c 0 1c2¢`a ``
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 15. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨! R
‰v—‡™‰e‘”t’d™ ¡‰™—•T ‰e‘”tl‰ue‰–™“’‰e
m‰‰e”t–“—X™‰e‘”t‰˜—y’d™ ¡‰je‡T ‰e‘”tl‰ue‰–™“’‰e
‰e‘”tl‰ue‰–™“’‰e ¡iu|xxr¤)tt7¤¤)tT m‰‰e”t–“—X‰e‘”tl‰u’d™
‘‡ ˜‘e
h™l‘‘• ™— ¡˜‰–“ w‘‡w ‰ˆ– ‘– ’—en m‰ˆ– s˜‰–“ w˜‘ew ‰ˆ– m‘ k”“¤ ™˜‰–“ ‰ˆ– –”‰mm‘¤
‰v—‡™‰e‘”t’d™
‘– ¡iu|xxr¤)tt7¤¤)tT m‰‰e”t–“—X‰e‘”tl‰u’d™ ˜‘e• m‘“–”‰mm‘” ‰ˆ– ‰–‰‰i
l‰“d ¡l‘T —d—{q–‰i x—j™“F m hQ g‰–t
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 16. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨! d
w‰”ej‘t ‘‡ ‘y ~ ‰–—’“d—uw –”‰‰™ nm— k”“” –ˆ’“}
¡ k™—‡–‰’ –”‰‰t
w‰”ej‘t ‘‡ ‘yw –”‰‰t
m‰‰e”t–“—X‰e‘”tl‰u’d™ m‘ k”“” –ˆ’“}
l‰“d ¡l‘T —d—{q–‰i x—j™“F m hR g‰–t
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 17. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨ ! f
h‰v—– ‰e‘”™ ‘– ‰e‘”™ˆ’“ˆ ‰ˆ– nn— ‘– ™‰n‘” ’m“l‘‘• ‰ˆ– nn|
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 18. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨ ! h
w‰™‘¤w k”“¤
w¡ ˆ’j‘m7ˆ’“‰e‘”t–™—™“uw ˆ–“l w‰je–w ‰”—g‰}
h m‘ k”“” s‰n‘” m‘“–“nm‘¤ e‘
w™‰“–e‰g‘ew –”‰‰t
‰e‘”tl‰ue‰–™“’‰e m‘ k”“” –ˆ’“}
l‰“d ¡l‘T —d—{q–‰i x—j™“F m hd g‰–t
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 19. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨ ! i
h‰e‘”™ˆ’“ˆ ‰ˆ– ‰–—ngj ‘– ‰n‘” ’m“l‘‘• ‰ˆ– nn|
w‰”ej‘t ‘‡ ‘yw –”‰‰t
‰e‘”tl‰ue‰–™“’‰e m‘ k”“” –ˆ’“}
l‰“d ¡l‘T —d—{q–‰i x—j™“F m hf g‰–t
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡
- 20. %¤('#¤¥¨¤£'¨¨¥%%$¥## ¨ ! ¡z
q–”‰{‘eg ‰ˆ– mje nm— n“j¡ hh g‰–t
qj‘f e‘• ‰™“”e‰D‰ m— ™— x m‘ ‰d‘eg˜“ ‘– ™—‰e— e‰ˆ–‘ l‰• — n‰“•“–m‰n“ ‘™— ‰d—ˆ ‰l sz g‰–™ m www
§¨¦ ¡ £¦¤© £¦ ¨§¦ £¦¤© ¨§¦¥¤£ ¢ ¡