Skip to content

Commit 7adfdf2

Browse files
authored
Merge pull request #41 from pankona/wave-barancing
wave barancing
2 parents 2ba4d20 + f798a3c commit 7adfdf2

File tree

7 files changed

+83
-29
lines changed

7 files changed

+83
-29
lines changed

atkpane.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ func newSmallHand(game *Game) *smallHand {
6969
zindex: 100,
7070
image: ebiten.NewImageFromImage(img),
7171

72-
cooldown: 15, // ここを短くすると連打できるようになっていく
72+
cooldown: 10, // ここを短くすると連打できるようになっていく
7373

74-
attackPower: 1,
74+
attackPower: 3,
7575
}
7676

7777
smallHandPool = h

audio.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -128,11 +128,12 @@ func (a *audioPlayer) play(soundname string) {
128128
active++
129129
}
130130
}
131-
if active >= 5 {
131+
if active >= 10 {
132132
return
133133
}
134134

135135
if player, ok := a.players[soundname]; ok {
136+
// TODO: 同時に同じ音がいっぱい音が鳴るとパフォーマンスが悪くなるので、いったん同時に音が鳴らないようにしている
136137
if player.IsPlaying() {
137138
return
138139
}

bugs.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -115,19 +115,19 @@ func newBug(game *Game, bugColor bugColor, x, y int, onDestroy func(b *bug)) *bu
115115
bug.speed = 5
116116
bug.attackPower = 1
117117
bug.attackRange = 1
118-
bug.health = 2
118+
bug.health = 3
119119
bug.name = "Red bug"
120120
case bugsBlue:
121121
bug.speed = 4
122122
bug.attackPower = 1
123123
bug.attackRange = 1
124-
bug.health = 3
124+
bug.health = 5
125125
bug.name = "Blue bug"
126126
case bugsGreen:
127127
bug.speed = 3
128128
bug.attackPower = 1
129129
bug.attackRange = 50
130-
bug.health = 4
130+
bug.health = 7
131131
bug.name = "Green bug"
132132
default:
133133
log.Fatal("invalid bug color")
@@ -173,13 +173,14 @@ func (b *bug) attack(a Damager) {
173173
a.Damage(b.attackPower)
174174

175175
// エフェクトや音を制御する
176+
// TODO: 攻撃時に音が鳴りすぎてパフォーマンス問題が発生するので、いったん音を鳴らさないようにしている
176177
switch b.selfColor {
177178
case bugsRed:
178-
getAudioPlayer().play(soundHikkaki)
179+
//getAudioPlayer().play(soundHikkaki)
179180
case bugsBlue:
180-
getAudioPlayer().play(soundHikkaki)
181+
//getAudioPlayer().play(soundHikkaki)
181182
case bugsGreen:
182-
getAudioPlayer().play(soundShot)
183+
//getAudioPlayer().play(soundShot)
183184

184185
tx, ty := a.(Building).Position()
185186
e := newGreenBugAttackEffect(b.game, b.x, b.y, tx, ty)

main.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ const (
6969

7070
// コスト一覧
7171
const (
72-
CostBarricadeBuild = 30
73-
CostTowerBuild = 50
74-
CostRadioTowerBuild = 70
72+
CostBarricadeBuild = 50
73+
CostTowerBuild = 150
74+
CostRadioTowerBuild = 250
7575
)
7676

7777
const (
@@ -221,7 +221,7 @@ func (g *Game) initialize() {
221221
waveEndFn := func() {
222222
g.SetBuildingPhase()
223223
// ウェーブ終了時に一定のクレジットを得る
224-
g.credit += 100
224+
g.credit += 120
225225
}
226226

227227
g.waveCtrl = newWaveController(g, waveEndFn)

radiotower.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type radioTower struct {
4747
isOverlapping bool
4848
}
4949

50-
const radioTowerAttackCoolDown = 30
50+
const radioTowerAttackCoolDown = 60
5151

5252
func newRadioTower(game *Game, x, y int, onDestroy func(b *radioTower)) *radioTower {
5353
img, _, err := image.Decode(bytes.NewReader(radioTowerImageData))
@@ -72,7 +72,7 @@ func newRadioTower(game *Game, x, y int, onDestroy func(b *radioTower)) *radioTo
7272
longAttackRange: 400,
7373
attackZoneRadius: 50,
7474

75-
attackPower: 10,
75+
attackPower: 5,
7676

7777
image: ebiten.NewImageFromImage(img),
7878

tower.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ type tower struct {
4545
isOverlapping bool
4646
}
4747

48-
const towerAttackCoolDown = 15
48+
const towerAttackCoolDown = 30
4949

5050
func newTower(game *Game, x, y int, onDestroy func(b *tower)) *tower {
5151
img, _, err := image.Decode(bytes.NewReader(towerImageData))
@@ -64,7 +64,7 @@ func newTower(game *Game, x, y int, onDestroy func(b *tower)) *tower {
6464

6565
health: 70,
6666
attackRange: 300,
67-
attackPower: 2,
67+
attackPower: 1,
6868

6969
image: ebiten.NewImageFromImage(img),
7070

wavectl.go

+64-12
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,12 @@ type spawnInfo struct {
7575
x, y int
7676
}
7777

78-
func generateSpawnInfos(num int) []spawnInfo {
78+
// トータル10になるようにする
79+
type bugSpawnRatio struct {
80+
red, blue, green int
81+
}
82+
83+
func generateSpawnInfos(num int, spawnRatio bugSpawnRatio) []spawnInfo {
7984
rand.NewSource(time.Now().UnixNano())
8085
var infos []spawnInfo
8186

@@ -98,11 +103,10 @@ func generateSpawnInfos(num int) []spawnInfo {
98103
y = rand.Intn(screenHeight)
99104
}
100105

101-
// 赤虫:青虫:緑 = 3:5:2 で生成する
102106
r := rand.Intn(10)
103-
if r < 3 {
107+
if r < spawnRatio.red {
104108
infos = append(infos, spawnInfo{bugsRed, x, y})
105-
} else if r < 8 {
109+
} else if r < spawnRatio.red+spawnRatio.blue {
106110
infos = append(infos, spawnInfo{bugsBlue, x, y})
107111
} else {
108112
infos = append(infos, spawnInfo{bugsGreen, x, y})
@@ -116,15 +120,63 @@ var waveList = [][]struct {
116120
spawnFrame int
117121
spawnInfoList []spawnInfo
118122
}{
119-
{
120-
{0, generateSpawnInfos(20)},
121-
{60, generateSpawnInfos(20)},
122-
{120, generateSpawnInfos(20)},
123+
// ウェーブにおける敵の戦闘力は以下のように計算してみる
124+
// 1. 赤虫: 1, 青虫: 2, 緑虫: 3
125+
// 2. それぞれの虫の数をかけて、それを足し合わせる
126+
// 3. それをウェーブの戦闘力とする
127+
// 例: 赤虫が 5, 青虫が 3, 緑虫が 2 の場合、戦闘力は 5*1 + 3*2 + 2*3 = 5 + 6 + 6 = 17 となる
128+
// 後半のウェーブは戦闘力が高くなるように設定している
129+
130+
{ // 戦闘力10 赤だけ
131+
{0, generateSpawnInfos(5, bugSpawnRatio{10, 0, 0})},
132+
{60, generateSpawnInfos(5, bugSpawnRatio{10, 0, 0})},
133+
},
134+
{ // 戦闘力20 青だけ
135+
{0, generateSpawnInfos(5, bugSpawnRatio{0, 10, 0})},
136+
{60, generateSpawnInfos(5, bugSpawnRatio{0, 10, 0})},
137+
},
138+
{ // 戦闘力30 緑だけ
139+
{0, generateSpawnInfos(5, bugSpawnRatio{0, 0, 10})},
140+
{60, generateSpawnInfos(5, bugSpawnRatio{0, 0, 10})},
141+
},
142+
{ // 戦闘力40 赤青混合
143+
{0, generateSpawnInfos(12, bugSpawnRatio{4, 6, 0})},
144+
{60, generateSpawnInfos(13, bugSpawnRatio{4, 6, 0})},
145+
},
146+
{ // 戦闘力50 青緑混合
147+
{0, generateSpawnInfos(12, bugSpawnRatio{0, 6, 4})},
148+
{60, generateSpawnInfos(13, bugSpawnRatio{0, 6, 4})},
149+
},
150+
{ // 戦闘力60 赤緑混合
151+
{0, generateSpawnInfos(19, bugSpawnRatio{7, 0, 3})},
152+
{60, generateSpawnInfos(19, bugSpawnRatio{7, 0, 3})},
153+
},
154+
{ // 戦闘力70 全部混合ちょっといっぱいくる
155+
{0, generateSpawnInfos(20, bugSpawnRatio{3, 5, 2})},
156+
{60, generateSpawnInfos(20, bugSpawnRatio{3, 5, 2})},
157+
{120, generateSpawnInfos(20, bugSpawnRatio{3, 5, 2})},
158+
{240, generateSpawnInfos(20, bugSpawnRatio{3, 5, 2})},
159+
},
160+
{ // 戦闘力80 全部混合ちょっと控えめ
161+
{0, generateSpawnInfos(14, bugSpawnRatio{3, 5, 2})},
162+
{60, generateSpawnInfos(14, bugSpawnRatio{3, 5, 2})},
163+
{120, generateSpawnInfos(14, bugSpawnRatio{3, 5, 2})},
164+
},
165+
{ // 戦闘力90 全部混合ちょっと控えめ
166+
{0, generateSpawnInfos(14, bugSpawnRatio{3, 5, 2})},
167+
{60, generateSpawnInfos(14, bugSpawnRatio{3, 5, 2})},
168+
{120, generateSpawnInfos(14, bugSpawnRatio{3, 5, 2})},
169+
},
170+
{ // 戦闘力90 全部混合ちょっと控えめ
171+
{0, generateSpawnInfos(14, bugSpawnRatio{3, 5, 2})},
172+
{60, generateSpawnInfos(14, bugSpawnRatio{3, 5, 2})},
173+
{120, generateSpawnInfos(14, bugSpawnRatio{3, 5, 2})},
123174
},
124-
{
125-
{0, generateSpawnInfos(25)},
126-
{60, generateSpawnInfos(25)},
127-
{120, generateSpawnInfos(25)},
175+
{ // 戦闘力100 全部混合いっぱいくる
176+
{0, generateSpawnInfos(30, bugSpawnRatio{3, 5, 2})},
177+
{60, generateSpawnInfos(30, bugSpawnRatio{3, 5, 2})},
178+
{120, generateSpawnInfos(30, bugSpawnRatio{3, 5, 2})},
179+
{240, generateSpawnInfos(30, bugSpawnRatio{3, 5, 2})},
128180
},
129181
}
130182

0 commit comments

Comments
 (0)