[gnome-games] Trivial code refactoring & small fixes
- From: Jason Clinton <jclinton src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-games] Trivial code refactoring & small fixes
- Date: Wed, 14 Oct 2009 02:51:10 +0000 (UTC)
commit 57ceb060f004cd2430f36bb868dc6a1dcad5cd29
Author: Guillaume Beland <guillaume beland gmail com>
Date: Tue Jul 21 15:02:44 2009 -0400
Trivial code refactoring & small fixes
gnibbles/gnibbles.c | 51 +++++++++++++++++++++++------------------------
gnibbles/worm-clutter.c | 19 ++++++++++-------
2 files changed, 36 insertions(+), 34 deletions(-)
---
diff --git a/gnibbles/gnibbles.c b/gnibbles/gnibbles.c
index 666f396..ce643f1 100644
--- a/gnibbles/gnibbles.c
+++ b/gnibbles/gnibbles.c
@@ -222,16 +222,18 @@ gnibbles_move_worms (void)
{
gint i, j, olddir, length, nbr_actor;
gint status = 1, nlives = 1;
- gint *dead;
+ gboolean *dead;
- dead = g_new (gint, properties->numworms);
+ dead = g_new (gboolean, properties->numworms);
- for (i = 1; i < properties->numworms; i++) {
+ for (i = 0; i < properties->numworms; i++) {
olddir = worms[i]->direction;
- gnibbles_worm_ai_move (worms[i]);
+ if (!worms[i]->human) {
+ gnibbles_worm_ai_move (worms[i]);
- if (olddir != worms[i]->direction)
- gnibbles_worm_add_actor (worms[i]);
+ if (olddir != worms[i]->direction)
+ gnibbles_worm_add_actor (worms[i]);
+ }
}
if (boni->missed > MAXMISSED)
@@ -260,13 +262,7 @@ gnibbles_move_worms (void)
status &= !dead[i];
}
- for (i = 0; i < properties->numworms; i++) {
-
- nbr_actor = g_list_length (worms[i]->list);
- length = gnibbles_worm_get_length (worms[i]);
- //printf ("\nWorm ID: %d, Actors: %d, Length: %d, xhead: %d, yhead:%d",
- // i, nbr_actor, length, worms[i]->xhead, worms[i]->yhead);
-
+ for (i = 0; i < properties->numworms; i++) {
if (worms[i]->xhead >= BOARDWIDTH) {
worms[i]->xhead = 0;
gnibbles_worm_add_actor(worms[i]);
@@ -281,21 +277,25 @@ gnibbles_move_worms (void)
gnibbles_worm_add_actor (worms[i]);
}
- //if there's only one actor in the list, just move the actor
- if (nbr_actor == 1 && !dead[i] && worms[i]->lives > 0) {
- gnibbles_worm_move_straight_worm (worms[i]);
- } else if (nbr_actor >= 2 && !dead[i] && worms[i]->lives > 0) {
+ }
+
+ for (i = 0; i < properties->numworms; i++) {
+ if (g_list_length (worms[i]->list) > 1 && !dead[i] && worms[i]->lives > 0)
gnibbles_worm_move_tail (worms[i]);
- if (g_list_length (worms[i]->list) == 1)
- gnibbles_worm_move_straight_worm (worms[i]);
- else
- gnibbles_worm_move_head (worms[i]);
- } else if (dead[i]) {
- //worm's dead, do something clever about it...
- }
+ }
+
+ for (i = 0; i < properties->numworms; i++) {
+ if (g_list_length (worms[i]->list) > 1 && !dead[i] && worms[i]->lives > 0)
+ gnibbles_worm_move_head (worms[i]);
}
for (i = 0; i < properties->numworms; i++) {
+ if (g_list_length (worms[i]->list) == 1 && !dead[i] && worms[i]->lives > 0)
+ gnibbles_worm_move_straight_worm (worms[i]);
+ }
+
+
+ for (i = 0; i < properties->numworms; i++) {
for (j = 0; j < properties->numworms; j++) {
if (i != j && worms[i]->xhead == worms[j]->xhead
&& worms[i]->yhead == worms[j]->yhead
@@ -311,7 +311,6 @@ gnibbles_move_worms (void)
worms[i]->score *= .7;
if (!gnibbles_worm_lose_life (worms[i])) {
/* One of the worms lost one life, but the round continues. */
- // TODO: reset worm state
gnibbles_worm_reset (worms[i]);
games_sound_play ("crash");
}
@@ -328,6 +327,7 @@ gnibbles_move_worms (void)
if (worms[i]->lives > 0)
nlives += 1;
}
+
if (nlives == 1 && (properties->ai + properties->human > 1)) {
/* There is one player left, the other AI players are dead, and that player has won! */
return (VICTORY);
@@ -335,7 +335,6 @@ gnibbles_move_worms (void)
/* There was only one worm, and it died. */
return (GAMEOVER);
}
-
/* Noone died, so the round can continue. */
g_free (dead);
diff --git a/gnibbles/worm-clutter.c b/gnibbles/worm-clutter.c
index 884a5bf..dad3b83 100644
--- a/gnibbles/worm-clutter.c
+++ b/gnibbles/worm-clutter.c
@@ -74,6 +74,7 @@ gnibbles_worm_queue_keypress (GnibblesWorm * worm, guint dir)
/* Ignore duplicates in normal movement mode. This resolves the
* key repeat issue. We ignore this in relative mode because then
* you do want two keys that are the same in quick succession. */
+ printf ("\nfail here 1");
if ((!properties->wormprops[worm->number]->relmove) &&
(!g_queue_is_empty (key_queue[n])) &&
(dir == ((key_queue_entry *) g_queue_peek_tail (key_queue[n]))->dir))
@@ -130,7 +131,7 @@ gnibbles_worm_queue_empty (GnibblesWorm * worm)
if (!key_queue[n])
return;
-
+ printf ("\nfail here 2");
while (!g_queue_is_empty (key_queue[n])) {
entry = g_queue_pop_head (key_queue[n]);
g_free (entry);
@@ -325,6 +326,7 @@ gnibbles_worm_new (guint number, guint t_xhead,
worm->list = NULL;
worm->number = number;
worm->lives = SLIVES;
+ worm->human = FALSE;
worm->xhead = t_xhead;
worm->xstart = t_xhead;
@@ -469,14 +471,14 @@ gnibbles_worm_reset (GnibblesWorm * worm)
gint tail_length;
gint tail_dir;
gint i,j;
-
gint nbr_actor = clutter_group_get_n_children (CLUTTER_GROUP (worm->actors));
for (j = 0; j < nbr_actor; j++) {
tail_dir = gnibbles_worm_get_tail_direction (worm);
tail_actor = gnibbles_worm_get_tail_actor (worm);
tail_length = gnibbles_worm_get_actor_length (tail_actor);
-
+
+
switch (tail_dir) {
case WORMUP:
for (i = 0; i < tail_length; i++)
@@ -673,7 +675,7 @@ gnibbles_worm_move_straight_worm (GnibblesWorm *worm)
worm->xhead--;
level->walls[worm->xtail][worm->ytail] = EMPTYCHAR;
if (worm->xtail == 0)
- worm->xtail = BOARDWIDTH;
+ worm->xtail = BOARDWIDTH - 1;
else
worm->xtail--;
break;
@@ -684,14 +686,14 @@ gnibbles_worm_move_straight_worm (GnibblesWorm *worm)
worm->yhead--;
level->walls[worm->xtail][worm->ytail] = EMPTYCHAR;
if (worm->ytail == 0)
- worm->ytail = BOARDHEIGHT;
+ worm->ytail = BOARDHEIGHT - 1;
else
worm->ytail--;
break;
default:
break;
}
-
+ printf ("\nfail here 3");
if (key_queue[worm->number] && !g_queue_is_empty (key_queue[worm->number])) {
gnibbles_worm_dequeue_keypress (worm);
}
@@ -769,6 +771,7 @@ gnibbles_worm_move_head (GnibblesWorm *worm)
break;
}
+ printf ("\nfail here 4");
if (key_queue[worm->number] && !g_queue_is_empty (key_queue[worm->number])) {
gnibbles_worm_dequeue_keypress (worm);
}
@@ -828,7 +831,7 @@ gnibbles_worm_move_tail (GnibblesWorm *worm)
properties->tilesize);
level->walls[worm->xtail][worm->ytail] = EMPTYCHAR;
if (worm->xtail == 0)
- worm->xtail = BOARDWIDTH;
+ worm->xtail = BOARDWIDTH - 1;
else
worm->xtail--;
break;
@@ -838,7 +841,7 @@ gnibbles_worm_move_tail (GnibblesWorm *worm)
size);
level->walls[worm->xtail][worm->ytail] = EMPTYCHAR;
if (worm->ytail == 0)
- worm->ytail = BOARDHEIGHT;
+ worm->ytail = BOARDHEIGHT - 1;
else
worm->ytail--;
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]