private bool canCreateLei() { int i, length, nextpos; for (i = 0; i < 4; ++i) { length = dirLen(i); if (leiLen >= length && OurGame.map[MyHelp.Vector2ToPos(pos) + MyHelp.posLen[i] * length].mapData < 0x40) { break; } } if (i >= 4 && MyHelp.Random(50) > 20) { return(false); } for (i = 0; i < 4; ++i) { nextpos = MyHelp.Vector2ToPos(pos); if (MyHelp.isInBound(ref nextpos, i)) { if (dirLen(i) != 0) { if (i == 0 || i == 1) { if (dirLen(nextpos, 2) != 0 || dirLen(nextpos, 3) != 0) { return(true); } } else { if (dirLen(nextpos, 1) != 0 || dirLen(nextpos, 0) != 0) { return(true); } } } } } for (i = 0; i < 4; ++i) { if (dirLen(i) > leiLen) { return(true); } } return(false); }
static public bool createArticle(byte pos) { if (MyHelp.Random(50) > 30) { return(false); } for (int i = 0; i < MyHelp.maxActicle; ++i) { if (acticle[i].active == false) { acticle[i].Create((byte)MyHelp.Random(7), pos); return(true); } } return(false); }
public void ChangDir() { if (Active > 1 && Active < 0x10) { return; } int k; int newDir; if (canCreateLei()) { createLei(); } checkSafe(); switch (moveDir.count) { case 0: dir |= 0x10; break; case 1: for (k = 0; k < 4; ++k) { if ((moveDir.canMove & (1 << k)) != 0) { dir = k; break; } } break; default: if (this.X > OurGame.Master.X) { if (this.Y > OurGame.Master.Y) { newDir = 5; } else if (this.Y == OurGame.Master.Y) { newDir = 4; } else { newDir = 6; } } else if (this.X == OurGame.Master.X) { if (this.Y > OurGame.Master.Y) { newDir = 1; } else if (this.Y == OurGame.Master.Y) { newDir = 15; } else { newDir = 2; } } else { if (this.Y > OurGame.Master.Y) { newDir = 9; } else if (this.Y == OurGame.Master.Y) { newDir = 8; } else { newDir = 10; } } if (MyHelp.Random(50) < 40 && (newDir & moveDir.canMove) != 0) { for (k = 0; k < 4; ++k) { if ((newDir & moveDir.canMove & (1 << k)) != 0) { dir = k; break; } } } else if (!(MyHelp.Random(50) > 10 && dir < 4 && (moveDir.canMove & (1 << dir)) != 0)) { newDir = 0; int part = MyHelp.Random(moveDir.count); for (k = 0; k < 4; ++k) { if ((moveDir.canMove & (1 << k)) != 0) { ++newDir; } if (newDir > part) { break; } } dir = k; } break; } }
private void check() { if (MyHelp.checkHit(OurGame.Master.pos, _pos, 5)) { switch (_ID) { case 0: //增加雷数 OurGame.Master.maxLei = MyHelp.Min(OurGame.Master.maxLei + 1, 3); break; case 1: //增加长度 OurGame.Master.leiLen = MyHelp.Min(OurGame.Master.leiLen + 1, 3); break; case 2: //数度为4 if (OurGame.Master.speed == 2) { OurGame.Master.speed = 4; } break; case 3: //加龟 if (OurGame.Master.speed == 2 || OurGame.Master.speed == 4) { if (MyHelp.Random(20) <= 10) { OurGame.Master.speed = 5; OurGame.Master.Active = 0x11; } else { OurGame.Master.speed = 1; OurGame.Master.Active = 0x10; } } break; case 4: //加分4 break; case 5: //加分1 break; case 6: //加分2 break; } Active = false; return; } for (int i = 0; i < MyHelp.maxEnemy; ++i) { if (MyHelp.checkHit(OurGame.Enemy[i].pos, _pos, 5)) { switch (_ID) { case 0: //增加雷数 OurGame.Enemy[i].maxLei = MyHelp.Min(OurGame.Enemy[i].maxLei + 1, 3); break; case 1: //增加长度 OurGame.Enemy[i].leiLen = MyHelp.Min(OurGame.Enemy[i].leiLen + 1, 3); break; case 2: //数度为4 if (OurGame.Enemy[i].speed == 2) { OurGame.Enemy[i].speed = 4; } break; case 3: //加龟 if (OurGame.Enemy[i].speed == 2 || OurGame.Enemy[i].speed == 4) { if (MyHelp.Random(20) <= 10) { OurGame.Enemy[i].speed = 5; OurGame.Enemy[i].Active = 0x11; } else { OurGame.Enemy[i].speed = 1; OurGame.Enemy[i].Active = 0x10; } } break; } Active = false; return; } } }