TempleOSCDV5.01.ISO
This commit is contained in:
1 parent
f6eacf7744
commit
320c7ee98a
219 files changed
+5211
-4853
No files matched your search
+29
-29
@@ -3,7 +3,7 @@ U0 InitDefines()
|
||||
I64 w=GR_WIDTH,h=GR_HEIGHT-FONT_HEIGHT,cols,rows,
|
||||
size=PopUpRangeI64(1,9,,"Size\n"),rad=16-size;
|
||||
if (size<0) throw;
|
||||
DefinePrint("NUM_UNITS","%d",4096/SqrI64(rad)&~1);
|
||||
DefinePrint("UNITS_NUM","%d",4096/SqrI64(rad)&~1);
|
||||
DefinePrint("CIRCLE_RAD","%d",rad);
|
||||
DefinePrint("MOVE_CIRCLES","%d",40/rad);
|
||||
|
||||
@@ -19,7 +19,7 @@ class Unit
|
||||
{
|
||||
I64 num,x,y,player,link,color;
|
||||
Bool alive,king;
|
||||
} u[NUM_UNITS];
|
||||
} u[UNITS_NUM];
|
||||
|
||||
CDC *map_dc;
|
||||
I64 cur_player,num_alive[2],start_x,start_y,end_x,end_y;
|
||||
@@ -68,12 +68,12 @@ U0 DrawIt(CTask *task,CDC *dc)
|
||||
}
|
||||
GrPrint(dc,2,2,"Player %d",cur_player+1);
|
||||
|
||||
for (i=0;i<NUM_UNITS;i++)
|
||||
for (i=0;i<UNITS_NUM;i++)
|
||||
if (u[i].alive) {
|
||||
dc->color=u[i].color;
|
||||
GrFloodFill(dc,u[i].x,u[i].y);
|
||||
}
|
||||
for (i=0;i<NUM_UNITS;i++)
|
||||
for (i=0;i<UNITS_NUM;i++)
|
||||
if (u[i].alive && !u[i].king) {
|
||||
dc->color=BLACK;
|
||||
GrLine(dc,u[i].x,u[i].y,u[u[i].link].x,u[u[i].link].y);
|
||||
@@ -98,9 +98,9 @@ U0 DrawIt(CTask *task,CDC *dc)
|
||||
|
||||
Unit *UnitFind(I64 x,I64 y,I64 player)
|
||||
{
|
||||
I64 i,dd,best_dd=MAX_I64;
|
||||
I64 i,dd,best_dd=I64_MAX;
|
||||
Unit *res=NULL;
|
||||
for (i=0;i<NUM_UNITS;i++) {
|
||||
for (i=0;i<UNITS_NUM;i++) {
|
||||
if (u[i].player==player && u[i].alive) {
|
||||
dd=SqrI64(u[i].x-x)+SqrI64(u[i].y-y);
|
||||
if (dd<best_dd) {
|
||||
@@ -116,7 +116,7 @@ U0 KillsChk(I64 x1,I64 y1,I64 player)
|
||||
{
|
||||
I64 i,j,x2,y2,dd;
|
||||
Bool found;
|
||||
for (i=0;i<NUM_UNITS;i++) {
|
||||
for (i=0;i<UNITS_NUM;i++) {
|
||||
if (u[i].player!=player && u[i].alive && !u[i].king) {
|
||||
x2=(u[i].x+u[u[i].link].x)>>1;
|
||||
y2=(u[i].y+u[u[i].link].y)>>1;
|
||||
@@ -127,7 +127,7 @@ U0 KillsChk(I64 x1,I64 y1,I64 player)
|
||||
num_alive[u[i].player]--;
|
||||
do {
|
||||
found=FALSE;
|
||||
for (j=0;j<NUM_UNITS;j++)
|
||||
for (j=0;j<UNITS_NUM;j++)
|
||||
if (u[j].alive && u[j].player!=player && !u[j].king &&
|
||||
!u[u[j].link].alive) {
|
||||
found=TRUE;
|
||||
@@ -208,17 +208,17 @@ U0 Init()
|
||||
map_dc=DrawHexMap(&w,&h);
|
||||
cur_player=0;
|
||||
|
||||
for (i=0;i<NUM_UNITS/2;i++) {
|
||||
for (i=0;i<UNITS_NUM/2;i++) {
|
||||
u[i].num=i;
|
||||
u[i+NUM_UNITS/2].num=i+NUM_UNITS/2;
|
||||
u[i+UNITS_NUM/2].num=i+UNITS_NUM/2;
|
||||
|
||||
ti_restart:
|
||||
u[i].y=FloorI64(RandU32%h,CIRCLE_RAD*2)+CIRCLE_RAD;
|
||||
u[i+NUM_UNITS/2].y=h-1-u[i].y;
|
||||
u[i+UNITS_NUM/2].y=h-1-u[i].y;
|
||||
j1=u[i].y/(CIRCLE_RAD*2);
|
||||
j2=u[i+NUM_UNITS/2].y/(CIRCLE_RAD*2);
|
||||
j2=u[i+UNITS_NUM/2].y/(CIRCLE_RAD*2);
|
||||
u[i].y+=BORDER_Y;
|
||||
u[i+NUM_UNITS/2].y+=BORDER_Y;
|
||||
u[i+UNITS_NUM/2].y+=BORDER_Y;
|
||||
|
||||
if (!i) {
|
||||
u[i].x=CIRCLE_RAD;
|
||||
@@ -226,40 +226,40 @@ ti_restart:
|
||||
goto ti_restart;
|
||||
} else
|
||||
u[i].x=FloorI64(RandU32%((w-CIRCLE_RAD*2*2)/2),CIRCLE_RAD*2)+CIRCLE_RAD;
|
||||
u[i+NUM_UNITS/2].x=w-1-u[i].x;
|
||||
u[i+UNITS_NUM/2].x=w-1-u[i].x;
|
||||
|
||||
if (j1&1)
|
||||
u[i].x+=CIRCLE_RAD;
|
||||
if (j2&1)
|
||||
u[i+NUM_UNITS/2].x+=CIRCLE_RAD;
|
||||
u[i+UNITS_NUM/2].x+=CIRCLE_RAD;
|
||||
u[i].x+=BORDER_X;
|
||||
u[i+NUM_UNITS/2].x+=BORDER_X;
|
||||
u[i+UNITS_NUM/2].x+=BORDER_X;
|
||||
|
||||
S2W(&u[i].x,&u[i].y);
|
||||
S2W(&u[i+NUM_UNITS/2].x,&u[i+NUM_UNITS/2].y);
|
||||
S2W(&u[i+UNITS_NUM/2].x,&u[i+UNITS_NUM/2].y);
|
||||
|
||||
u[i].player=0;
|
||||
u[i+NUM_UNITS/2].player=1;
|
||||
u[i+UNITS_NUM/2].player=1;
|
||||
|
||||
u[i].alive=TRUE;
|
||||
u[i+NUM_UNITS/2].alive=TRUE;
|
||||
u[i+UNITS_NUM/2].alive=TRUE;
|
||||
|
||||
if (!i) {
|
||||
u[i].color=LTCYAN;
|
||||
u[i+NUM_UNITS/2].color=LTPURPLE;
|
||||
u[i+UNITS_NUM/2].color=LTPURPLE;
|
||||
u[i].king=TRUE;
|
||||
u[i+NUM_UNITS/2].king=TRUE;
|
||||
u[i+UNITS_NUM/2].king=TRUE;
|
||||
} else {
|
||||
u[i].color=CYAN;
|
||||
u[i+NUM_UNITS/2].color=PURPLE;
|
||||
u[i+UNITS_NUM/2].color=PURPLE;
|
||||
u[i].king=FALSE;
|
||||
u[i+NUM_UNITS/2].king=FALSE;
|
||||
u[i+UNITS_NUM/2].king=FALSE;
|
||||
}
|
||||
}
|
||||
for (i=0;i<NUM_UNITS/2;i++) {
|
||||
for (i=0;i<UNITS_NUM/2;i++) {
|
||||
if (!u[i].king) {
|
||||
best_dd=MAX_I64;
|
||||
for (j=0;j<NUM_UNITS/2;j++) {
|
||||
best_dd=I64_MAX;
|
||||
for (j=0;j<UNITS_NUM/2;j++) {
|
||||
if (i!=j) {
|
||||
dd=SqrI64(u[i].x-u[j].x)+SqrI64(u[i].y-u[j].y);
|
||||
if (u[j].x<=u[i].x && dd<best_dd) {
|
||||
@@ -269,11 +269,11 @@ ti_restart:
|
||||
}
|
||||
}
|
||||
u[i].link=best;
|
||||
u[i+NUM_UNITS/2].link=best+NUM_UNITS/2;
|
||||
u[i+UNITS_NUM/2].link=best+UNITS_NUM/2;
|
||||
}
|
||||
}
|
||||
num_alive[0]=NUM_UNITS/2;
|
||||
num_alive[1]=NUM_UNITS/2;
|
||||
num_alive[0]=UNITS_NUM/2;
|
||||
num_alive[1]=UNITS_NUM/2;
|
||||
}
|
||||
|
||||
U0 CleanUp()
|
||||
|
||||
Reference in new issue
Block a user