From 75c7ffcc5a4b761f61d6aa70c88c76e13e7d65ab Mon Sep 17 00:00:00 2001 From: Killery Date: Sat, 2 Jan 2016 09:24:05 +0900 Subject: [PATCH] =?utf8?q?CPU=E5=B0=84=E7=A8=8B=E8=B7=9D=E9=9B=A2=E3=83=9F?= =?utf8?q?=E3=82=B9=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Awars III/FieldScene.m | 3 ++ Awars III/FieldView.m | 114 ++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 107 insertions(+), 10 deletions(-) diff --git a/Awars III/FieldScene.m b/Awars III/FieldScene.m index 470de57..2bf0b5b 100755 --- a/Awars III/FieldScene.m +++ b/Awars III/FieldScene.m @@ -1458,6 +1458,8 @@ unitBreak = U; possionX = unitBreak->x; possionY = unitBreak->y; + //おまんちん + stanbyFlag = false; if(buildNum[U->x][U->y] >= 0){ @@ -6277,6 +6279,7 @@ w000p: UA = NULL; wtRdy = false; Utarget = NULL; + //おまんちん cpuIsAttackingFlag = false; for(int g = 0;g < chipWidth;g++){ for(int k = 0;k < chipHeight;k++){ diff --git a/Awars III/FieldView.m b/Awars III/FieldView.m index da45bd1..037af8b 100755 --- a/Awars III/FieldView.m +++ b/Awars III/FieldView.m @@ -67,6 +67,8 @@ -(void)EventLoopFV:(NSTimer*)timer{ + //if(unitBreak) NSLog(@"unitBreakAtkrange %d", unitBreak->atkRange); + if(evInitMap) {evInitMap = false; //[self loadMesh:SC[storyNumb].nameMAP index:scenarioNumb]; @@ -1324,6 +1326,44 @@ } + +-(void)checkRangeAttack:(int)startX startY:(int)startY leftPow:(int)leftPow pieceType:(int)pieceType aMap:(int[][1002])aMap aPiece:(UNITCHIP*)aPiece i:(int)i{ + + int i0 = i; + if(leftPow <= i0) return; + + int chipTeam; + if(Uselected) chipTeam = Uselected->team; + + if(startX < 0) startX = 0; + if(startY < 0) startY = 0; + + aMap[startY][startX] = i0; //広がる範囲 + i0++; // 上 + + if( leftPow > i0 ){ + [self checkRangeAttack:startX startY:startY - 1 leftPow:leftPow pieceType:pieceType aMap:aMap aPiece:aPiece i:i0]; + } + + // 下 + if( leftPow > i0 ){ + [self checkRangeAttack:startX startY:startY + 1 leftPow:leftPow pieceType:pieceType aMap:aMap aPiece:aPiece i:i0]; + } + + // 右 + if( leftPow > i0 ){ + [self checkRangeAttack:startX - 1 startY:startY leftPow:leftPow pieceType:pieceType aMap:aMap aPiece:aPiece i:i0]; + } + + // 左 + if( leftPow > i0 ){ + [self checkRangeAttack:startX + 1 startY:startY leftPow:leftPow pieceType:pieceType aMap:aMap aPiece:aPiece i:i0]; + } + +} + + + -(void)LookupAttackRangeExtent:(int)startX startY:(int)startY aPiece:(UNITCHIP*)aPiece turnSide:(BOOL)turnSide { @@ -1753,6 +1793,9 @@ if(coolTime) return; + if(stanbyFlag) + return; + if(unitMoveEndFlag){ pushStanbyFlag = true; UA = NULL; @@ -1784,6 +1827,7 @@ pushStanbyFlag = false; [self makeEnemyAI]; [self cpuSearchEnemy]; + if(Utarget) NSLog(@"Utarg %d", Utarget->number); cpuModeMOVEflag = true; if(unitNoMoveStanbyFlag){ static int waitTimer = 50; @@ -1872,6 +1916,7 @@ unitCPUAttackFlag = true; cpuMODE = MODE_CPU_BATTLE; wtAttackedFlag = true; + battleFlag = true; return; } break; @@ -2066,6 +2111,8 @@ return; } + + //おまんちん U = UTop; while (U->number != wtUnitNum) { U = U->next; @@ -2098,7 +2145,7 @@ CPUAttackFlag2 = false; unitNoMoveFlag = false; cpuMODE = MODE_CPU_IDLE; - + if(Utarget) NSLog(@"Utarg2 %d", Utarget->number); break; default: cpuMODE = MODE_CPU_IDLE; @@ -2122,6 +2169,8 @@ } + + -(void)cpuEmployment{ B = BTop; @@ -2372,7 +2421,7 @@ g_attackRangeTheta[y][x] = 0; } } - [self checkAttackRange:U->y startY:U->x leftPow:unitBreak->atkRange+1 pieceType:U->C.S_C.typeMONS aMap:g_attackRangeTheta aPiece:&U->C]; + [self checkRangeAttack:U->y startY:U->x leftPow:unitBreak->atkRange+1 pieceType:U->C.S_C.typeMONS aMap:g_attackRangeTheta aPiece:&U->C i:0]; ATTACK *AT = unitBreak->C.A; for(int i = 0;i < crCAL1;i++){ @@ -2458,7 +2507,8 @@ for (int x = 1; x <= chipWidth; x++) { for (int y = 1; y <= chipHeight; y++) { - if(g_attackRangeTheta[y][x] > 0 && g_selectRange[y][x] > 0 && g_entireUnit[y][x] == 0){ + if(g_attackRangeTheta[y][x] > 0 && g_selectRange[y][x] > 0 && g_entireUnit[y][x] == 0 + && g_attackRangeTheta[U->y][U->x] == unitBreak->atkRange){ int point = (unitBreak->atkRange - g_attackRangeBeta[y][x])*20 + g_selectRange[y][x]*50; @@ -2485,7 +2535,12 @@ U = U->next; } - if(!U){ + ATTACK *AT = unitBreak->C.A; + for(int i = 0;i < crCAL1;i++){ + AT = AT->next; + } + + if(!U /*&& AT->D->sort == 1*/){ [self healBreak];//回復の対象がいない時、回復以外にする } @@ -2499,7 +2554,7 @@ g_attackRangeTheta[y][x] = 0; } } - [self checkAttackRange:U->y startY:U->x leftPow:unitBreak->atkRange+1 pieceType:U->C.S_C.typeMONS aMap:g_attackRangeTheta aPiece:&U->C]; + [self checkRangeAttack:U->y startY:U->x leftPow:unitBreak->atkRange+1 pieceType:U->C.S_C.typeMONS aMap:g_attackRangeTheta aPiece:&U->C i:0]; ATTACK *AT = unitBreak->C.A; for(int i = 0;i < crCAL1;i++){ @@ -2544,7 +2599,8 @@ for (int x = 1; x <= chipWidth; x++) { for (int y = 1; y <= chipHeight; y++) { - if(g_attackRangeTheta[y][x] > 0 && g_selectRange[y][x] > 0 && g_entireUnit[y][x] == 0){ + if(g_attackRangeTheta[y][x] > 0 && g_selectRange[y][x] > 0 && g_entireUnit[y][x] == 0 + && g_attackRangeTheta[U->y][U->x] == unitBreak->atkRange){ int point = (unitBreak->atkRange - g_attackRangeBeta[y][x])*20 + g_selectRange[y][x]*50; @@ -2579,9 +2635,9 @@ } } - [self checkEnemyRange:unitBreak->atkRange+1 cntNum:0 tX:Utarget->x tY:Utarget->y aMap:g_enemyRange]; + //[self checkEnemyRange:unitBreak->atkRange+1 cntNum:0 tX:Utarget->x tY:Utarget->y aMap:g_enemyRange]; - unitBreak->atkRange = unitBreak->atkRange+1 - g_enemyRange[g_target_x][g_target_y]; + //unitBreak->atkRange = unitBreak->atkRange+1 - g_enemyRange[g_target_x][g_target_y]; @@ -2618,7 +2674,7 @@ crCAL = crCAL1; - //NSLog(@"%@", Utarget->C.name); + NSLog(@"UtargNUm %d", Utarget->number); return; } @@ -3064,7 +3120,7 @@ }unitBreak->C.A = UAT; unitBreak->atkRange = UA->rangeB; - + NSLog(@"unitBreak->atkRange %d", unitBreak->atkRange); for(int g = 0;g <= chipWidth;g++){ for(int h = 0; h <= chipHeight;h++){ g_attackRangeAlpha [h][g] = 0; @@ -3498,12 +3554,50 @@ if(g_attackRangeBeta[y][x] > 0 && !cpuOMFGmoveATKfixFlag){ [self DrawImage:chipSelect x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + /* + switch(g_attackRangeBeta[y][x]){ + case 1: + [self DrawImage:n1 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + case 2: + [self DrawImage:n2 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + case 3: + [self DrawImage:n3 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + case 4: + [self DrawImage:n4 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + case 5: + [self DrawImage:n5 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + case 6: + [self DrawImage:n6 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + case 7: + [self DrawImage:n7 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + case 8: + [self DrawImage:n8 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + case 9: + [self DrawImage:n9 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + case 10: + [self DrawImage:n10 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6]; + break; + + + + }*/ } } } + + if(cpuIsAttackingFlag || (UA && unitMoveEndFlag)){ for (int x = 1; x <= chipWidth;x++) { for(int y = 1;y <= chipHeight;y++){ -- 2.11.0