changeset 58:e0018f39f7e1

fix random func.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Sun, 06 Feb 2011 17:49:33 +0900
parents 978097c6427a
children cd05eee90279
files Character.c Character_state.c TaskDandy.cc collision_task.cc main.c ppe/chara_state22.cc ppe/chara_state28.cc ppe/chara_state41.cc ppe/chara_state500.cc ppe/chara_state601.cc ppe/chara_state602.cc schedule3.c state_task.cc syokika.c syokika.h
diffstat 15 files changed, 279 insertions(+), 147 deletions(-) [+]
line wrap: on
line diff
--- a/Character.c	Sat Jan 29 22:43:17 2011 +0900
+++ b/Character.c	Sun Feb 06 17:49:33 2011 +0900
@@ -106,8 +106,8 @@
 	 CHARACTER * (*action)(CHARACTER *chara))
 {
     CHARACTER *q;
-  
-    for(q = active_chara_list->next; q != NULL ;q = q->next)
+    
+    for(q = active_chara_list->next; q->next != NULL ;q = q->next)
       {
 	if(q->f == FALSE)
 	  {
--- a/Character_state.c	Sat Jan 29 22:43:17 2011 +0900
+++ b/Character_state.c	Sun Feb 06 17:49:33 2011 +0900
@@ -35,13 +35,6 @@
 int fastebos = 0;
 int counter = 0;
 
-static
-int get_num()
-{
-    counter++;
-    counter %= 4;
-    return counter;
-}
 
 CHARACTER * noaction(CHARACTER *p)
 {
@@ -57,7 +50,7 @@
 	     filpcount, dtable[p->charano].name, p->chara_id,
 	     p->x, p->y, p->vx, p->vy);
       printf("               [TAMA]lv1 = %d, lv2 = %d [LASER]lv1 = %d\n",
-	     tama_lv1_end, tama_lv2_end, laser_lv1_end);
+	     tama_lv1_end+1, tama_lv2_end+1, laser_lv1_end+1);
   }
   
   CHARACTER *parent = p;
@@ -446,31 +439,30 @@
 CHARACTER * chara_state22(CHARACTER *p)
 {
   int sf;
-  int rand = get_num();
 
-  sf = rand % 4;
+  sf = random() % 4;
   if((sf == 0) || (sf == 1))
     {
       p->x = -35;
-      p->y = rand % (120 - 35);
-      p->vx = (rand % 4 + 1);
-      p->vy = rand % 3 + 1;
+      p->y = random() % (120 - 35);
+      p->vx = (random() % 4 + 1);
+      p->vy = random() % 3 + 1;
       p->state = chara_state23;
     }
   if((sf == 2))
     {
-      p->x = rand % 290;
+      p->x = random() % 290;
       p->y = -30;
-      p->vx = rand % 3 - 1;
-      p->vy = (rand % 4 + 1);
+      p->vx = random() % 3 - 1;
+      p->vy = (random() % 4 + 1);
       p->state = chara_state23;
     }
   if(sf == 3)
     {
       p->x = 320;
-      p->y = rand % (120 - 35);
-      p->vx = (rand % 4 + 1) * -1;
-      p->vy = rand % 3 -1;
+      p->y = random() % (120 - 35);
+      p->vx = (random() % 4 + 1) * -1;
+      p->vy = random() % 3 -1;
       p->state = chara_state23;
     }
   return p;
@@ -502,7 +494,6 @@
 CHARACTER * chara_state25(CHARACTER *p)
 {
   int amari;
-  int rand = get_num();
 
   if(p->dt1 <= 360)
     {
@@ -516,7 +507,7 @@
     }
   count++;
   PutSprite(count, p->x - 42, p->y, 64);
-  amari = rand % 160;
+  amari = random() % 160;
   if((amari == 1) && (enemy_part5->f == TRUE))
     {
       p->state = chara_state26;
@@ -623,9 +614,11 @@
   p->dt2++;
   return p;
 }
+
+static int myrand = 1;
+
 CHARACTER * chara_state28(CHARACTER *p)
 {
-  int rand = get_num();
 
   if (p->dt1 <= 360)
     {
@@ -643,9 +636,9 @@
     {
       Putenemy(24, p->x + 14,
 	       p->y + 14,
-	       (rand % 5 + 0.5) * (rand % 2 ==
+	       (myrand % 5 + 0.5) * (myrand % 2 ==
 				     1 ? -1 : 1),
-	       (rand % 5 + 0.5) * (rand % 2 ==
+	       (myrand % 5 + 0.5) * (myrand % 2 ==
 				     1 ? -1 : 1), chara_state29);
     }
   p->dt1 += 3;
@@ -925,8 +918,6 @@
 
 CHARACTER * chara_state41(CHARACTER *p) //left arm up arm vulkan
 {
-  int rand;
-
   if (enemy_part2->f == FALSE)
     {
       Bom(p->x, p->y);
@@ -954,7 +945,7 @@
     {
       if (p->dt1 % 15 == 1) 
 	{
-	  Puttama(9 + rand % 2, p->x, p->y);
+	  Puttama(9 + myrand % 2, p->x, p->y);
 	}
     }
   if (rinkf1 == 10)
@@ -1082,7 +1073,6 @@
 
 CHARACTER * chara_state500(CHARACTER *p)
 {
-  int rand = get_num();
   p->s = 0;
   
   kyeenemyno = p;
@@ -1094,26 +1084,29 @@
   //		PutSprite(count, enemy[tekino].x + 16,
   //  enemy[tekino].y + 16, 100);
   PutSpriteEx(100, p->x + 16, p->y + 16, 2, 2, p->dt1);
-  
-  if (p->dt1 % (5 + p->dt2 / 8) == 1) {
-    if (rand % 2 == 1)
-      Putenemy(24, p->x, p->y,
-	       (rand % 5 + 0.5) * (rand % 2 ==
-				     1 ? -1 : 1),
-	       (rand % 5 + 0.5) * (rand % 2 ==
-				     1 ? -1 : 1), chara_state501);
-    else
-      Putenemy(rand % 2 + 1, p->x,
-	       p->y,
-	       (int) Mycos(p->dt1 / 4) * 4 /
-	       SANKAKU,
-	       (int) -Mysin(p->dt1 / 4) * 4 /
-	       SANKAKU, chara_state501);
+
+  int num = 5 +  p->dt2 / 8;
+  if (num != 0) {
+    if ((p->dt1 % num) == 1) {
+      if (myrand % 2 == 1)
+	Putenemy(24, p->x, p->y,
+		 (myrand % 5 + 0.5) * (myrand % 2 ==
+				       1 ? -1 : 1),
+		 (myrand % 5 + 0.5) * (myrand % 2 ==
+				       1 ? -1 : 1), chara_state501);
+      else
+	Putenemy(myrand % 2 + 1, p->x,
+		 p->y,
+		 (int) Mycos(p->dt1 / 4) * 4 /
+		 SANKAKU,
+		 (int) -Mysin(p->dt1 / 4) * 4 /
+		 SANKAKU, chara_state501);
+    }
+    if (p->dt1 == 50) {
+      /*Putenemy(44,0,0,1,1,411); */
+    }
   }
-  if (p->dt1 == 50) {
-    /*Putenemy(44,0,0,1,1,411); */
-  }
-  return p;
+    return p;
 }
 
 
@@ -1126,7 +1119,7 @@
       Puttama(11, p->x, p->y);
     }
   p->dt1++;
-  printf("x = %f, y = %f, vx = %f, vy = %f\n",p->x, p->y, p->vx, p->vy);
+  //  printf("x = %f, y = %f, vx = %f, vy = %f\n",p->x, p->y, p->vx, p->vy);
   return p;
 }
 
@@ -1158,15 +1151,14 @@
 
 CHARACTER * chara_state601(CHARACTER *p)
 {
-  int rand = get_num();
   p->dt2++;
   if (p->x < jiki.x)
     p->vx++;
   if (p->x > jiki.x)
     p->vx--;
   p->x += p->vx;
-  Putenemy(6, p->x + 16 + rand % 32,
-	   p->y, 0, rand % 4, chara_state400);
+  Putenemy(6, p->x + 16 + random() % 32,
+	   p->y, 0, random() % 4, chara_state400);
   if (p->x < 0)
     p->x = 0;
   if (p->x > 260)
@@ -1184,12 +1176,10 @@
 
 CHARACTER * chara_state602(CHARACTER *p)
 {
-  int rand = get_num();
-
   p->dt2++;
   Putenemy(24, p->x + 14, p->y + 14,
-	   (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1),
-	   (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1),
+	   (random() % 5 + 0.5) * (random() % 2 == 1 ? -1 : 1),
+	   (random() % 5 + 0.5) * (random() % 2 == 1 ? -1 : 1),
 	   chara_state29);
   if (p->dt2 > 1024) {
     p->state = chara_state600;
--- a/TaskDandy.cc	Sat Jan 29 22:43:17 2011 +0900
+++ b/TaskDandy.cc	Sun Feb 06 17:49:33 2011 +0900
@@ -290,6 +290,7 @@
 
     __debug("finished init_chara_list\n");
 
+    srandom(SEED_VALUE);
     initStateList();
     collision_allocate();
 
--- a/collision_task.cc	Sat Jan 29 22:43:17 2011 +0900
+++ b/collision_task.cc	Sun Feb 06 17:49:33 2011 +0900
@@ -10,12 +10,14 @@
 #include "object.h"
 #include "sgoex.h"
 
+#include "debug_db.h"
 #include "StateList.h"
 #include "property.h"
 #include "collision_task.h"
 
 
 extern SpriteTable sptable[DEFOBJ];
+extern DebugDB dtable[DEFOBJ];
 extern TaskManager *tmanager;
 
 HTaskPtr update_task;
@@ -25,15 +27,25 @@
 void
 state_check(CHARACTER *p)
 {
+    int num = GetStateNum(p->state_task);
+
     if (p->collision_task == true) {
+	//debug
+	if (p->tama == FALSE) {
+	    printf("F%d: DELETE  [NAME]%s_%d  [COORD]x= %f  y= %f  vx= %f  vy= %f\n",
+		   filpcount, dtable[p->charano].name, p->chara_id,
+		   p->x, p->y, p->vx, p->vy);
+	    printf("             [STATE]%s [BULLET]tlv1 = %d, tlv2 = %d llv1 = %d\n",
+		   state_list[num].name, tama_lv1_end+1, tama_lv2_end+1, laser_lv1_end+1);
+	}
+
 	p->state_task = DELETE_CHARA;
 	p->state = delete_chara;
 	p->collision = noaction;
 	return;
-    } else {
-	int num = GetStateNum(p->state_task);
-	p->state = state_list[num].state;
     }
+
+    p->state = state_list[num].state;
 }
 
 static CollisionPropertyPtr
--- a/main.c	Sat Jan 29 22:43:17 2011 +0900
+++ b/main.c	Sun Feb 06 17:49:33 2011 +0900
@@ -112,8 +112,8 @@
 	return 1;
       }
     }
-
-    return 1;
+    runmode = 0;
+    return 0;
 }
 
 
@@ -272,7 +272,7 @@
     printf("%f FPS\n", ((float)frames)/(stop_time-start_time)*1000.0);
 
     SDL_GL_Leave2DMode();
-    SDL_FreeSurface(sprite);
+    SDL_FreeSurface(screen);
 
     SDL_JoystickClose(joy);
 
--- a/ppe/chara_state22.cc	Sat Jan 29 22:43:17 2011 +0900
+++ b/ppe/chara_state22.cc	Sun Feb 06 17:49:33 2011 +0900
@@ -6,33 +6,36 @@
 static int
 state22(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int rand = (int)smanager->get_param(0);
+    int rand1 = (int)smanager->get_param(0);
+    int rand2 = (int)smanager->get_param(1);
+    int rand3 = (int)smanager->get_param(2);
+    int rand4 = (int)smanager->get_param(3);
 
     CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
 
-      int sf = rand % 4;
+      int sf = rand1 % 4;
       if((sf == 0) || (sf == 1))
       {
 	  p->x = -35;
-	  p->y = rand % (120 - 35);
-	  p->vx = (rand % 4 + 1);
-	  p->vy = rand % 3 + 1;
+	  p->y = rand2 % (120 - 35);
+	  p->vx = (rand3 % 4 + 1);
+	  p->vy = rand4 % 3 + 1;
 	  p->state_task = STATE23;
       }
       if((sf == 2))
       {
-	  p->x = rand % 290;
+	  p->x = rand2 % 290;
 	  p->y = -30;
-	  p->vx = rand % 3 - 1;
-	  p->vy = (rand % 4 + 1);
+	  p->vx = rand3 % 3 - 1;
+	  p->vy = (rand4 % 4 + 1);
 	  p->state_task = STATE23;
       }
       if(sf == 3)
       {
 	  p->x = 320;
-	  p->y = rand % (120 - 35);
-	  p->vx = (rand % 4 + 1) * -1;
-	  p->vy = rand % 3 -1;
+	  p->y = rand2 % (120 - 35);
+	  p->vx = (rand3 % 4 + 1) * -1;
+	  p->vy = rand4 % 3 -1;
 	  p->state_task = STATE23;
       }
 
--- a/ppe/chara_state28.cc	Sat Jan 29 22:43:17 2011 +0900
+++ b/ppe/chara_state28.cc	Sun Feb 06 17:49:33 2011 +0900
@@ -7,18 +7,18 @@
 static int
 state28(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int rand = (int)smanager->get_param(2);
+    int rand = (int)smanager->get_param(0);
 
     int length = 2;
     CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
     int count = *(int*)smanager->get_input(rbuf, 1);
 
-    smanager->set_outputSize(4, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
+    smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
     smanager->setup_outputData();
 
     CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0);
     int *w_count = (int*)smanager->get_output(wbuf, 1);
-    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 4);
+    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2);
     sprite->flag = true;
 
     if (p->dt1 <= 360)
--- a/ppe/chara_state41.cc	Sat Jan 29 22:43:17 2011 +0900
+++ b/ppe/chara_state41.cc	Sun Feb 06 17:49:33 2011 +0900
@@ -12,7 +12,7 @@
     int length;
     CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
     CHARACTER *kyeenemyno = (CHARACTER*)smanager->get_input(rbuf, 1);
-    int rinkf1 = *(int*)smanager->get_input(rbuf, 3);
+    int rinkf1 = *(int*)smanager->get_input(rbuf, 2);
 
     if (enemy_part2_f == FALSE)
     {
@@ -31,9 +31,9 @@
 	if ((p->dt2 < 16))
 	{
 	    length = 1;
-	    smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
+	    smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
 	    smanager->setup_outputData();
-	    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2);
+	    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 1);
 	    sprite->flag = true;
 	    sprite->length = length;
 
@@ -54,9 +54,9 @@
 	if (p->dt1 % 15 == 1) 
 	{
 	    length = 1;
-	    smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
+	    smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
 	    smanager->setup_outputData();
-	    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2);
+	    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 1);
 	    sprite->flag = true;
 	    sprite->length = length;
 
@@ -68,9 +68,9 @@
 	if (p->dt2 != 0)
 	{
 	    length = 1;
-	    smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
+	    smanager->set_outputSize(1, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
 	    smanager->setup_outputData();
-	    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2);
+	    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 1);
 	    sprite->flag = true;
 	    sprite->length = length;
 
--- a/ppe/chara_state500.cc	Sat Jan 29 22:43:17 2011 +0900
+++ b/ppe/chara_state500.cc	Sun Feb 06 17:49:33 2011 +0900
@@ -29,29 +29,32 @@
     DefSpriteEx(100, 16, 16, &sprite->data[0]);
     PutSpriteEx(100, p->x + 16, p->y + 16, 2, 2, p->dt1, &sprite->data[1]);
     
-    if (p->dt1 % (5 + p->dt2 / 8) == 1) {
-	sprite->length = 3;
-
-	if (rand % 2 == 1)
-	    Putenemy(24, p->x, p->y,
-		     (rand % 5 + 0.5) * (rand % 2 ==
-					   1 ? -1 : 1),
-		     (rand % 5 + 0.5) * (rand % 2 ==
-					   1 ? -1 : 1), STATE501, &sprite->data[2]);
-	else
-	    Putenemy(rand % 2 + 1, p->x,
-		     p->y,
-		     (int) Mycos(p->dt1 / 4) * 4 /
-		     SANKAKU,
-		     (int) -Mysin(p->dt1 / 4) * 4 /
-		     SANKAKU, STATE501, &sprite->data[2]);
-    }
-    if (p->dt1 == 50) {
-	/*Putenemy(44,0,0,1,1,411); */
+    int num = 5 +  p->dt2 / 8;
+    if (num != 0) {
+	if (p->dt1 % num == 1) {
+	    sprite->length = 3;
+	    
+	    if (rand % 2 == 1)
+		Putenemy(24, p->x, p->y,
+			 (rand % 5 + 0.5) * (rand % 2 ==
+					     1 ? -1 : 1),
+			 (rand % 5 + 0.5) * (rand % 2 ==
+					     1 ? -1 : 1), STATE501, &sprite->data[2]);
+	    else
+		Putenemy(rand % 2 + 1, p->x,
+			 p->y,
+			 (int) Mycos(p->dt1 / 4) * 4 /
+			 SANKAKU,
+			 (int) -Mysin(p->dt1 / 4) * 4 /
+			 SANKAKU, STATE501, &sprite->data[2]);
+	}
+	if (p->dt1 == 50) {
+	    /*Putenemy(44,0,0,1,1,411); */
+	}
     }
     CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0);
     int *w_count = (int*)smanager->get_output(wbuf, 1);
-
+    
     *q = *p;
     *w_count = count;
     return 0;
--- a/ppe/chara_state601.cc	Sat Jan 29 22:43:17 2011 +0900
+++ b/ppe/chara_state601.cc	Sun Feb 06 17:49:33 2011 +0900
@@ -6,7 +6,8 @@
 static int
 state601(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int rand = (int)smanager->get_param(0);
+    int rand1 = (int)smanager->get_param(0);
+    int rand2 = (int)smanager->get_param(1);
 
     CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
     player *jiki = (player*)smanager->get_input(rbuf, 1);
@@ -25,8 +26,8 @@
     if (p->x > jiki->x)
 	p->vx--;
     p->x += p->vx;
-    Putenemy(6, p->x + 16 + rand % 32,
-	     p->y, 0, rand % 4, STATE400, &sprite->data[0]);
+    Putenemy(6, p->x + 16 + rand1 % 32,
+	     p->y, 0, rand2 % 4, STATE400, &sprite->data[0]);
     if (p->x < 0)
 	p->x = 0;
     if (p->x > 260)
--- a/ppe/chara_state602.cc	Sat Jan 29 22:43:17 2011 +0900
+++ b/ppe/chara_state602.cc	Sun Feb 06 17:49:33 2011 +0900
@@ -6,7 +6,10 @@
 static int
 state602(SchedTask *smanager, void *rbuf, void *wbuf)
 {
-    int rand = (int)smanager->get_param(0);
+    int rand1 = (int)smanager->get_param(0);
+    int rand2 = (int)smanager->get_param(1);
+    int rand3 = (int)smanager->get_param(2);
+    int rand4 = (int)smanager->get_param(3);
 
     CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
 
@@ -20,8 +23,8 @@
 
     p->dt2++;
     Putenemy(24, p->x + 14, p->y + 14,
-	     (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1),
-	     (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1),
+	     (rand1 % 5 + 0.5) * (rand2 % 2 == 1 ? -1 : 1),
+	     (rand3 % 5 + 0.5) * (rand4 % 2 == 1 ? -1 : 1),
 	     STATE29, &sprite->data[0]);
     if (p->dt2 > 1024) {
 	p->state_task = STATE600;
--- a/schedule3.c	Sat Jan 29 22:43:17 2011 +0900
+++ b/schedule3.c	Sun Feb 06 17:49:33 2011 +0900
@@ -718,10 +718,10 @@
 	    }
 	}
       */
-      
-	  
+
 	Endingscore(filpcount);
-	if (filpcount > 4000)
-	    filpcount = 4000;
+	if (filpcount > 4000) {
+	  filpcount = 4000;
 	}
+    }
 }
--- a/state_task.cc	Sat Jan 29 22:43:17 2011 +0900
+++ b/state_task.cc	Sun Feb 06 17:49:33 2011 +0900
@@ -21,7 +21,6 @@
 #include "collision_task.h"
 
 
-extern DebugDB dtable[DEFOBJ];
 extern SpriteTable sptable[DEFOBJ];
 extern TaskManager *tmanager;
 
@@ -189,15 +188,17 @@
     return p;
 }
 
-static int myrand = 1;
 
 CHARACTER*
-FixRandomTask(CHARACTER *p)
+sendRandomTask(CHARACTER *p)
 {
     int task_num = p->state_task;
     HTaskPtr state_task = tmanager->create_task(task_num);
     
-    state_task->set_param(0, (memaddr)myrand);
+    state_task->set_param(0, (memaddr)random());
+    state_task->set_param(1, (memaddr)random());
+    state_task->set_param(2, (memaddr)random());
+    state_task->set_param(3, (memaddr)random());
 
     state_task->set_inData(0, p, sizeof(CHARACTER));
 
@@ -510,7 +511,36 @@
 
     state_task->set_param(0, (memaddr)enemy_part1->f);
     state_task->set_param(1, (memaddr)enemy_part5->f);
-    state_task->set_param(2, (memaddr)myrand);
+    state_task->set_param(2, (memaddr)random());
+
+    state_task->set_inData(0, p, sizeof(CHARACTER));
+    state_task->set_inData(1, &count, sizeof(int));
+    
+    state_task->set_outData(0, p, sizeof(CHARACTER));
+    state_task->set_outData(1, &count, sizeof(int));
+    state_task->set_outData(2, &rinkx, sizeof(int));
+    state_task->set_outData(3, &rinkf1, sizeof(int));
+    state_task->set_outData(4, obj, 0);
+
+    state_task->set_post(checkContainer, (void*)p, (void*)obj);
+    state_task->set_cpu(get_cpunum());
+
+    state_next->wait_for(state_task);
+    state_task->spawn();
+    
+    return p;
+}
+
+
+CHARACTER*
+Boss2Task2(CHARACTER *p)
+{
+    int task_num = p->state_task;
+    int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
+    HTaskPtr state_task = tmanager->create_task(task_num);
+    ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
+    obj->flag = false;
+    obj->length = 0;
 
     state_task->set_inData(0, p, sizeof(CHARACTER));
     state_task->set_inData(1, &count, sizeof(int));
@@ -532,9 +562,39 @@
     return p;
 }
 
+static int myrand = 1;
 
 CHARACTER*
-Boss2Task2(CHARACTER *p, int num1, int num2)
+Boss2Task3(CHARACTER *p)
+{
+    int task_num = p->state_task;
+    int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
+    HTaskPtr state_task = tmanager->create_task(task_num);
+    ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
+    obj->flag = false;
+    obj->length = 0;
+
+    state_task->set_param(0, (memaddr)myrand);
+
+    state_task->set_inData(0, p, sizeof(CHARACTER));
+    state_task->set_inData(1, &count, sizeof(int));
+    
+    state_task->set_outData(0, p, sizeof(CHARACTER));
+    state_task->set_outData(1, &count, sizeof(int));
+    state_task->set_outData(2, obj, 0);
+
+    state_task->set_post(checkContainer, (void*)p, (void*)obj);
+    state_task->set_cpu(get_cpunum());
+
+    state_next->wait_for(state_task);
+    state_task->spawn();
+    
+    return p;
+}
+
+
+CHARACTER*
+Boss2Task4(CHARACTER *p, int num1, int num2)
 {
     int task_num = p->state_task;
     int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
@@ -549,7 +609,6 @@
     state_task->set_param(3, (memaddr)enemy_part4->f);
     state_task->set_param(4, (memaddr)enemystate[num1].charano);
     state_task->set_param(5, (memaddr)enemystate[num2].charano);
-    state_task->set_param(6, (memaddr)myrand);
 
     state_task->set_inData(0, p, sizeof(CHARACTER));
     state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER));
@@ -571,6 +630,40 @@
 
 
 CHARACTER*
+Boss2Task5(CHARACTER *p, int num1, int num2)
+{
+    int task_num = p->state_task;
+    int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
+    HTaskPtr state_task = tmanager->create_task(task_num);
+    ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
+    obj->flag = false;
+    obj->length = 0;
+
+    state_task->set_param(0, (memaddr)enemy_part1->f);
+    state_task->set_param(1, (memaddr)enemy_part2->f);
+    state_task->set_param(2, (memaddr)enemy_part3->f);
+    state_task->set_param(3, (memaddr)enemy_part4->f);
+    state_task->set_param(4, (memaddr)enemystate[num1].charano);
+    state_task->set_param(5, (memaddr)enemystate[num2].charano);
+
+    state_task->set_inData(0, p, sizeof(CHARACTER));
+    state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER));
+    state_task->set_inData(3, &rinkf2, sizeof(int));
+    
+    state_task->set_outData(0, p, sizeof(CHARACTER));
+    state_task->set_outData(1, obj, 0);
+
+    state_task->set_post(checkContainer, (void*)p, (void*)obj);
+    state_task->set_cpu(get_cpunum());
+
+    state_next->wait_for(state_task);
+    state_task->spawn();
+    
+    return p;
+}
+
+
+CHARACTER*
 Boss4Task(CHARACTER *p)
 {
     kyeenemyno = p;
@@ -602,7 +695,7 @@
 
 
 CHARACTER*
-Boss5Task(CHARACTER *p)
+Boss5Task1(CHARACTER *p)
 {
     int task_num = p->state_task;
     int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
@@ -611,7 +704,39 @@
     obj->flag = false;
     obj->length = 0;
 
-    state_task->set_param(0, (memaddr)myrand);
+    state_task->set_param(0, (memaddr)random());
+    state_task->set_param(1, (memaddr)random());
+
+    state_task->set_inData(0, p, sizeof(CHARACTER));
+    state_task->set_inData(1, &jiki, sizeof(player));
+
+    state_task->set_outData(0, p, sizeof(CHARACTER));
+    state_task->set_outData(1, obj, 0);
+
+    state_task->set_post(checkContainer, (void*)p, (void*)obj);    
+    state_task->set_cpu(get_cpunum());
+
+    state_next->wait_for(state_task);
+    state_task->spawn();
+    
+    return p;
+}
+
+
+CHARACTER*
+Boss5Task2(CHARACTER *p)
+{
+    int task_num = p->state_task;
+    int obj_size = sizeof(ObjContainer)+sizeof(ObjData)*DATA_LENGTH;
+    HTaskPtr state_task = tmanager->create_task(task_num);
+    ObjContainerPtr obj = (ObjContainerPtr)tmanager->allocate(obj_size);
+    obj->flag = false;
+    obj->length = 0;
+
+    state_task->set_param(0, (memaddr)random());
+    state_task->set_param(1, (memaddr)random());
+    state_task->set_param(2, (memaddr)random());
+    state_task->set_param(3, (memaddr)random());
 
     state_task->set_inData(0, p, sizeof(CHARACTER));
     state_task->set_inData(1, &jiki, sizeof(player));
@@ -639,14 +764,6 @@
 CHARACTER*
 delete_chara(CHARACTER *p)
 {
-    if (p->tama == FALSE) {
-	printf("F%d: DELETE  [NAME]%s_%d  [COORD]x= %f  y= %f  vx= %f  vy= %f\n",
-	       filpcount, dtable[p->charano].name, p->chara_id,
-	       p->x, p->y, p->vx, p->vy);
-	printf("            [TAMA]lv1 = %d, lv2 = %d [LASER]lv1 = %d\n",
-	       tama_lv1_end, tama_lv2_end, laser_lv1_end);
-    }
-
     CHARACTER *parent = p;
     p->f = FALSE;
     p->state = noaction;
@@ -792,7 +909,7 @@
 chara_state22(CHARACTER *p)
 {
     p->state_task = STATE22;
-    return FixRandomTask(p);
+    return sendRandomTask(p);
 }
 
 
@@ -835,20 +952,21 @@
 chara_state26(CHARACTER *p)
 {
     p->state_task = STATE26;
-    return Boss2Task1(p);
+    return Boss2Task2(p);
 }
 
 CHARACTER*
 chara_state27(CHARACTER *p) //rocket punch
 {
     p->state_task = STATE27;
-    return Boss2Task1(p);
+    return Boss2Task2(p);
 }
 CHARACTER*
 chara_state28(CHARACTER *p)
 {
     p->state_task = STATE28;
-    return Boss2Task1(p);
+//if many rand
+    return Boss2Task3(p);
 }
 
 
@@ -872,7 +990,7 @@
 chara_state31(CHARACTER *p) //right hand
 {
     p->state_task = STATE31;
-    return Boss2Task2(p, 0, 0);
+    return Boss2Task4(p, 0, 0);
 }
 
 
@@ -880,7 +998,7 @@
 chara_state32(CHARACTER *p) //left hand
 {
     p->state_task = STATE32;
-    return Boss2Task2(p, 14, 20);
+    return Boss2Task4(p, 14, 20);
 }
 
 
@@ -889,7 +1007,7 @@
 chara_state33(CHARACTER *p) // right shoulder
 {
     p->state_task = STATE33;
-    return Boss2Task2(p, 11, 19);
+    return Boss2Task4(p, 11, 19);
 }
 
 
@@ -897,7 +1015,7 @@
 chara_state34(CHARACTER *p) //left shoulder
 {
     p->state_task = STATE34;
-    return Boss2Task2(p, 12, 21);
+    return Boss2Task4(p, 12, 21);
 }
 
 
@@ -905,7 +1023,7 @@
 chara_state35(CHARACTER *p) // bust
 {
     p->state_task = STATE35;
-    return Boss2Task2(p, 15, 16);
+    return Boss2Task4(p, 15, 16);
 }
 
 
@@ -914,7 +1032,7 @@
 chara_state40(CHARACTER *p) //arm vulkan
 {
     p->state_task = STATE40;
-    return Boss2Task2(p, 0, 0);
+    return Boss2Task4(p, 0, 0);
 }
 
 
@@ -922,7 +1040,8 @@
 chara_state41(CHARACTER *p) //left arm up arm vulkan
 {
     p->state_task = STATE41;
-    return Boss2Task2(p, 0, 0);
+//if rand
+    return Boss2Task5(p, 0, 0);
 }
 
 
@@ -998,7 +1117,7 @@
 chara_state601(CHARACTER *p)
 {
     p->state_task = STATE601;
-    return Boss5Task(p);
+    return Boss5Task1(p);
 }
 
 
@@ -1006,5 +1125,5 @@
 chara_state602(CHARACTER *p)
 {
     p->state_task = STATE602;
-    return Boss5Task(p);
+    return Boss5Task2(p);
 }
--- a/syokika.c	Sat Jan 29 22:43:17 2011 +0900
+++ b/syokika.c	Sun Feb 06 17:49:33 2011 +0900
@@ -25,8 +25,6 @@
 //extern void init_sprite(TEXTURE * tex);
 //extern int LoadSprite();
 
-#define SEED_VALUE 1
-
 struct SDL_Surface *screen;
 
 OBJECT *font; 
@@ -84,7 +82,7 @@
       glDisable(GL_CULL_FACE);
       glOrtho(0.0, (GLdouble)screen->w, (GLdouble)screen->h, 0.0, 0.0, 1.0);*/
 	
-    srand(SEED_VALUE);
+    srandom(SEED_VALUE);
 
     //LoadSprite();
     // sankakuf();
--- a/syokika.h	Sat Jan 29 22:43:17 2011 +0900
+++ b/syokika.h	Sun Feb 06 17:49:33 2011 +0900
@@ -1,6 +1,8 @@
 #ifndef SYOKIKA_H
 #define SYOKIKA_H
 
+#define SEED_VALUE 1
+
 extern struct SDL_Surface *screen;
 
 typedef enum {