# HG changeset patch # User koba # Date 1294730821 -32400 # Node ID 6626e451a09d954fdb0fb8d75e0806669d1c04a5 # Parent 6989f8cb0259f3a1d1385c61cede4bd9b1f0020e fix random number. diff -r 6989f8cb0259 -r 6626e451a09d Character.h --- a/Character.h Sun Jan 09 23:14:26 2011 +0900 +++ b/Character.h Tue Jan 11 16:27:01 2011 +0900 @@ -14,6 +14,8 @@ #define ENEMY 2 #define ENEMYBULLET 3 +#define FIX_NUM 17 + //typedef void (*STATE)(CHARACTER *p); typedef struct CHARACTER * (*State)(struct CHARACTER *p); typedef struct CHARACTER * (*Collision)(struct CHARACTER *p); diff -r 6989f8cb0259 -r 6626e451a09d Character_state.c --- a/Character_state.c Sun Jan 09 23:14:26 2011 +0900 +++ b/Character_state.c Tue Jan 11 16:27:01 2011 +0900 @@ -30,6 +30,15 @@ int asteroidi = 0; int enemyfaste = 0; int fastebos = 0; +int counter = 0; + +static +int get_num() +{ + counter++; + counter %= 4; + return counter; +} CHARACTER * noaction(CHARACTER *p) { @@ -427,32 +436,34 @@ CHARACTER * chara_state22(CHARACTER *p) { int sf; + int rand = get_num(); - sf = rand() % 4; + sf = rand % 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 = rand % (120 - 35); + p->vx = (rand % 4 + 1); + p->vy = rand % 3 + 1; p->state = chara_state23; } if((sf == 2)) { - p->x = rand() % 290; + p->x = rand % 290; p->y = -30; - p->vx = rand() % 3 - 1; - p->vy = (rand() % 4 + 1); + p->vx = rand % 3 - 1; + p->vy = (rand % 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 = rand % (120 - 35); + p->vx = (rand % 4 + 1) * -1; + p->vy = rand % 3 -1; p->state = chara_state23; } + printf("x = %f, y = %f, vx = %f, vy = %f\n",p->x, p->y, p->vx, p->vy); return p; } @@ -482,6 +493,7 @@ CHARACTER * chara_state25(CHARACTER *p) { int amari; + int rand = get_num(); if(p->dt1 <= 360) { @@ -495,7 +507,7 @@ } count++; PutSprite(count, p->x - 42, p->y, 64); - amari = rand() % 160; + amari = rand % 160; if((amari == 1) && (enemy_part5->f == TRUE)) { p->state = chara_state26; @@ -604,6 +616,8 @@ } CHARACTER * chara_state28(CHARACTER *p) { + int rand = get_num(); + if (p->dt1 <= 360) { p->x = Mycos(p->dt1) * 30 / SANKAKU + 82 + 32; @@ -620,9 +634,9 @@ { Putenemy(24, p->x + 14, p->y + 14, - (rand() % 5 + 0.5) * (rand() % 2 == + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), - (rand() % 5 + 0.5) * (rand() % 2 == + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), chara_state29); } p->dt1 += 3; @@ -902,6 +916,8 @@ CHARACTER * chara_state41(CHARACTER *p) //left arm up arm vulkan { + int rand; + if (enemy_part2->f == FALSE) { Bom(p->x, p->y); @@ -929,7 +945,7 @@ { if (p->dt1 % 15 == 1) { - Puttama(9 + rand() % 2, p->x, p->y); + Puttama(9 + rand % 2, p->x, p->y); } } if (rinkf1 == 10) @@ -1057,6 +1073,7 @@ CHARACTER * chara_state500(CHARACTER *p) { + int rand = get_num(); p->s = 0; kyeenemyno = p; @@ -1070,14 +1087,14 @@ PutSpriteEx(100, p->x + 16, p->y + 16, 2, 2, p->dt1); if (p->dt1 % (5 + p->dt2 / 8) == 1) { - if (rand() % 2 == 1) + if (rand % 2 == 1) Putenemy(24, p->x, p->y, - (rand() % 5 + 0.5) * (rand() % 2 == + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), - (rand() % 5 + 0.5) * (rand() % 2 == + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), chara_state501); else - Putenemy(rand() % 2 + 1, p->x, + Putenemy(rand % 2 + 1, p->x, p->y, (int) Mycos(p->dt1 / 4) * 4 / SANKAKU, @@ -1100,6 +1117,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); return p; } @@ -1131,14 +1149,15 @@ 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 + rand % 32, + p->y, 0, rand % 4, chara_state400); if (p->x < 0) p->x = 0; if (p->x > 260) @@ -1156,10 +1175,12 @@ 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), + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), chara_state29); if (p->dt2 > 1024) { p->state = chara_state600; @@ -1191,5 +1212,6 @@ } } asteroidi++; + // printf("x = %f, y = %f, vx = %f, vy = %f\n",p->x, p->y, p->vx, p->vy); return p; } diff -r 6989f8cb0259 -r 6626e451a09d Dandy.cc --- a/Dandy.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/Dandy.cc Tue Jan 11 16:27:01 2011 +0900 @@ -335,7 +335,7 @@ tlv3[i].y = -1; } filpcount = 0; - stage = 0; + stage = 4; //for (i = 0; i < 300; i++) //enemy[i].f = FALSE; jiki.zanki = 3; diff -r 6989f8cb0259 -r 6626e451a09d TaskDandy.cc --- a/TaskDandy.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/TaskDandy.cc Tue Jan 11 16:27:01 2011 +0900 @@ -69,7 +69,6 @@ SDL_Joystick *joy; - const char *usr_help_str = "Usage: ./twice [-length data_length] [-count task_num]\n\ -length Number of data (default DATA_NUM (Func.h))\n\ -count Number of task (default 1)\n"; @@ -285,10 +284,10 @@ asteroidi = 0; // timeprof_begin(timeprof_move); //Move(); //enemy move - collision_detect(); outofwindow(); // timeprof_end(timeprof_move); state_update(); + collision_detect(); //charpatern(); //bosguage(); @@ -335,7 +334,7 @@ tlv3[i].y = -1; } filpcount = 0; - stage = 0; + stage = 4; //for (i = 0; i < 300; i++) //enemy[i].f = FALSE; jiki.zanki = 3; diff -r 6989f8cb0259 -r 6626e451a09d ppe/chara_state22.cc --- a/ppe/chara_state22.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/ppe/chara_state22.cc Tue Jan 11 16:27:01 2011 +0900 @@ -6,31 +6,33 @@ static int state22(SchedTask *smanager, void *rbuf, void *wbuf) { + int rand = (int)smanager->get_param(0); + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); - int sf = rand() % 4; + int sf = rand % 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 = rand % (120 - 35); + p->vx = (rand % 4 + 1); + p->vy = rand % 3 + 1; p->task = STATE23; } if((sf == 2)) { - p->x = rand() % 290; + p->x = rand % 290; p->y = -30; - p->vx = rand() % 3 - 1; - p->vy = (rand() % 4 + 1); + p->vx = rand % 3 - 1; + p->vy = (rand % 4 + 1); p->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 = rand % (120 - 35); + p->vx = (rand % 4 + 1) * -1; + p->vy = rand % 3 -1; p->task = STATE23; } diff -r 6989f8cb0259 -r 6626e451a09d ppe/chara_state25.cc --- a/ppe/chara_state25.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/ppe/chara_state25.cc Tue Jan 11 16:27:01 2011 +0900 @@ -12,6 +12,7 @@ int part1_f = (int)smanager->get_param(0); int part5_f = (int)smanager->get_param(1); + int rand = (int)smanager->get_param(2); CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); int count = *(int*)smanager->get_input(rbuf, 1); @@ -40,7 +41,7 @@ count++; *w_count = count; PutSprite(count, p->x - 42, p->y, 64, &sprite->data[0]); - amari = rand() % 160; + amari = rand % 160; if((amari == 1) && (part5_f == TRUE)) { p->task = STATE26; diff -r 6989f8cb0259 -r 6626e451a09d ppe/chara_state28.cc --- a/ppe/chara_state28.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/ppe/chara_state28.cc Tue Jan 11 16:27:01 2011 +0900 @@ -7,6 +7,8 @@ static int state28(SchedTask *smanager, void *rbuf, void *wbuf) { + int rand = (int)smanager->get_param(2); + int length = 2; CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); int count = *(int*)smanager->get_input(rbuf, 1); @@ -35,9 +37,9 @@ { Putenemy(24, p->x + 14, p->y + 14, - (rand() % 5 + 0.5) * (rand() % 2 == + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), - (rand() % 5 + 0.5) * (rand() % 2 == + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), STATE29, &sprite->data[1]); } else { length = 1; diff -r 6989f8cb0259 -r 6626e451a09d ppe/chara_state41.cc --- a/ppe/chara_state41.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/ppe/chara_state41.cc Tue Jan 11 16:27:01 2011 +0900 @@ -7,6 +7,7 @@ state41(SchedTask *smanager, void *rbuf, void *wbuf) { int enemy_part2_f = (int)smanager->get_param(1); + int rand = (int)smanager->get_param(6); int length; CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); @@ -59,7 +60,7 @@ sprite->flag = true; sprite->length = length; - Puttama(9 + rand() % 2, p->x, p->y, &sprite->data[0]); + Puttama(9 + rand % 2, p->x, p->y, &sprite->data[0]); } } if (rinkf1 == 10) diff -r 6989f8cb0259 -r 6626e451a09d ppe/chara_state500.cc --- a/ppe/chara_state500.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/ppe/chara_state500.cc Tue Jan 11 16:27:01 2011 +0900 @@ -7,6 +7,8 @@ static int state500(SchedTask *smanager, void *rbuf, void *wbuf) { + int rand = (int)smanager->get_param(0); + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); int count = *(int*)smanager->get_input(rbuf, 1); @@ -30,14 +32,14 @@ if (p->dt1 % (5 + p->dt2 / 8) == 1) { sprite->length = 3; - if (rand() % 2 == 1) + if (rand % 2 == 1) Putenemy(24, p->x, p->y, - (rand() % 5 + 0.5) * (rand() % 2 == + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), - (rand() % 5 + 0.5) * (rand() % 2 == + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), STATE501, &sprite->data[2]); else - Putenemy(rand() % 2 + 1, p->x, + Putenemy(rand % 2 + 1, p->x, p->y, (int) Mycos(p->dt1 / 4) * 4 / SANKAKU, diff -r 6989f8cb0259 -r 6626e451a09d ppe/chara_state601.cc --- a/ppe/chara_state601.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/ppe/chara_state601.cc Tue Jan 11 16:27:01 2011 +0900 @@ -6,6 +6,8 @@ static int state601(SchedTask *smanager, void *rbuf, void *wbuf) { + int rand = (int)smanager->get_param(0); + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); player *jiki = (player*)smanager->get_input(rbuf, 1); @@ -23,8 +25,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 + rand % 32, + p->y, 0, rand % 4, STATE400, &sprite->data[0]); if (p->x < 0) p->x = 0; if (p->x > 260) diff -r 6989f8cb0259 -r 6626e451a09d ppe/chara_state602.cc --- a/ppe/chara_state602.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/ppe/chara_state602.cc Tue Jan 11 16:27:01 2011 +0900 @@ -6,6 +6,8 @@ static int state602(SchedTask *smanager, void *rbuf, void *wbuf) { + int rand = (int)smanager->get_param(0); + CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0); int length = 1; @@ -18,8 +20,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), + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), + (rand % 5 + 0.5) * (rand % 2 == 1 ? -1 : 1), STATE29, &sprite->data[0]); if (p->dt2 > 1024) { p->task = STATE600; diff -r 6989f8cb0259 -r 6626e451a09d state_task.cc --- a/state_task.cc Sun Jan 09 23:14:26 2011 +0900 +++ b/state_task.cc Tue Jan 11 16:27:01 2011 +0900 @@ -38,8 +38,18 @@ int enemyfaste = 0; int fastebos = 0; +int counter = 0; + State state_list[LIST_NUM]; +/* output 0~3 */ +static +int get_num() +{ + counter++; + counter %= 4; + return counter; +} static int power_of_two(int input) @@ -146,11 +156,24 @@ void +PrintCoordinate(SchedTask *s, void *chara, void *arg) +{ + CHARACTER *p = (CHARACTER*)chara; + printf("x = %f, y = %f, vx = %f, vy = %f\n",p->x, p->y, p->vx, p->vy); + + int num = GetStateNum(p->task); + p->state = state_list[num]; +} + + +void freeObject(SchedTask *s, void *chara, void *obj) { free(obj); CHARACTER *p = (CHARACTER*)chara; +// printf("x = %f, y = %f, vx = %f, vy = %f\n",p->x, p->y, p->vx, p->vy); + int num = GetStateNum(p->task); p->state = state_list[num]; } @@ -224,6 +247,26 @@ CHARACTER* +FixRandomTask(CHARACTER *p) +{ + int task_num = p->task; + HTaskPtr state_task = tmanager->create_task(task_num); + + state_task->set_param(0, (memaddr)get_num()); + + state_task->set_inData(0, p, sizeof(CHARACTER)); + + state_task->set_outData(0, p, sizeof(CHARACTER)); + + state_task->set_post(PrintCoordinate, (void*)p, NULL); + state_task->set_cpu(SPE_ANY); + state_task->spawn(); + + return p; +} + + +CHARACTER* withJikiTask(CHARACTER *p) { int task_num = p->task; @@ -257,7 +300,7 @@ 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_post(checkContainer, (void*)p, (void*)obj); state_task->set_cpu(SPE_ANY); state_task->spawn(); @@ -316,7 +359,7 @@ } state_task->set_cpu(SPE_ANY); state_task->spawn(); - + asteroidi++; return p; } @@ -500,6 +543,7 @@ state_task->set_param(0, (memaddr)enemy_part1->f); state_task->set_param(1, (memaddr)enemy_part5->f); + state_task->set_param(2, (memaddr)get_num()); state_task->set_inData(0, p, sizeof(CHARACTER)); state_task->set_inData(1, &count, sizeof(int)); @@ -536,6 +580,7 @@ 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)get_num()); state_task->set_inData(0, p, sizeof(CHARACTER)); state_task->set_inData(1, kyeenemyno, sizeof(CHARACTER)); @@ -566,6 +611,8 @@ obj->flag = false; obj->length = 0; + state_task->set_param(0, (memaddr)get_num()); + state_task->set_inData(0, p, sizeof(CHARACTER)); state_task->set_inData(1, &count, sizeof(int)); @@ -582,6 +629,32 @@ CHARACTER* +Boss5Task(CHARACTER *p) +{ + int task_num = p->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)get_num()); + + 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(SPE_ANY); + state_task->spawn(); + + return p; +} + + +CHARACTER* noaction(CHARACTER *p) { return p; @@ -736,8 +809,8 @@ CHARACTER* chara_state22(CHARACTER *p) { - p->task = STATE22; - return SimpleStateTask(p); + p->task = STATE22; + return FixRandomTask(p); } @@ -872,7 +945,8 @@ } -CHARACTER * chara_state400(CHARACTER *p) +CHARACTER* +chara_state400(CHARACTER *p) { p->task = STATE400; return SimpleStateTask(p); @@ -944,7 +1018,7 @@ chara_state601(CHARACTER *p) { p->task = STATE601; - return JikiContainerTask(p); + return Boss5Task(p); } @@ -952,5 +1026,5 @@ chara_state602(CHARACTER *p) { p->task = STATE602; - return sendContainerTask(p); + return Boss5Task(p); }