182 lines
5 KiB
Go
182 lines
5 KiB
Go
package main
|
|
|
|
import (
|
|
"math/rand"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
gameColorsCellSize = 16
|
|
gameColorsSpeed = 9
|
|
gameColorsWidth = int16(displayWidth / gameColorsCellSize)
|
|
gameColorsHeight = int16(displayHeight / gameColorsCellSize)
|
|
)
|
|
|
|
var (
|
|
colorgame [][]bool
|
|
|
|
p1x, p1y, p2x, p2y, tx int16
|
|
v1x, v1y, v2x, v2y, ty int16
|
|
)
|
|
|
|
func ColorGame() {
|
|
display.FillScreen(colorOrange)
|
|
|
|
colorgame = make([][]bool, gameColorsWidth)
|
|
|
|
p1x = int16(rand.Int31n(int32(displayWidth/3))) + displayWidth/12
|
|
p1y = int16(rand.Int31n(int32(4*gameColorsHeight/5))) + gameColorsHeight/10
|
|
p2x = int16(rand.Int31n(int32(displayWidth/3))) + 7*displayWidth/12
|
|
p2y = int16(rand.Int31n(int32(4*gameColorsHeight/5))) + gameColorsHeight/10
|
|
|
|
v1x = 2
|
|
v1y = 3
|
|
v2x = -3
|
|
v2y = 2
|
|
|
|
for i := int16(0); i < gameColorsWidth; i++ {
|
|
colorgame[i] = make([]bool, gameColorsHeight)
|
|
if i >= gameColorsWidth/2 {
|
|
for j := int16(0); j < gameColorsHeight; j++ {
|
|
colorgame[i][j] = true
|
|
display.FillRectangle(i*gameColorsCellSize, j*gameColorsCellSize, gameColorsCellSize, gameColorsCellSize, colorPurple)
|
|
}
|
|
}
|
|
}
|
|
|
|
display.FillRectangle(p1x-gameColorsSpeed, p1y-gameColorsSpeed, gameColorsCellSize, gameColorsCellSize, colorPurple)
|
|
display.FillRectangle(p2x-gameColorsSpeed, p2y-gameColorsSpeed, gameColorsCellSize, gameColorsCellSize, colorOrange)
|
|
|
|
gw := (gameColorsWidth * gameColorsCellSize) - gameColorsSpeed
|
|
gh := (gameColorsHeight * gameColorsCellSize) - gameColorsSpeed
|
|
|
|
for {
|
|
display.FillRectangle(p1x-gameColorsSpeed, p1y-gameColorsSpeed, gameColorsCellSize, gameColorsCellSize, colorOrange)
|
|
display.FillRectangle(p2x-gameColorsSpeed, p2y-gameColorsSpeed, gameColorsCellSize, gameColorsCellSize, colorPurple)
|
|
|
|
p1x += v1x
|
|
p1y += v1y
|
|
p2x += v2x
|
|
p2y += v2y
|
|
|
|
if (p1x < gameColorsSpeed && v1x < 0) || (p1x > gw && v1x > 0) {
|
|
v1x = -v1x
|
|
}
|
|
if (p2x < gameColorsSpeed && v2x < 0) || (p2x > gw && v2x > 0) {
|
|
v2x = -v2x
|
|
}
|
|
if (p1y < gameColorsSpeed && v1y < 0) || (p1y > gh && v1y > 0) {
|
|
v1y = -v1y
|
|
}
|
|
if (p2y < gameColorsSpeed && v2y < 0) || (p2y > gh && v2y > 0) {
|
|
v2y = -v2y
|
|
}
|
|
|
|
tx = (p1x - gameColorsSpeed) / gameColorsCellSize
|
|
ty = p1y / gameColorsCellSize
|
|
if tx < 0 {
|
|
tx = 0
|
|
}
|
|
if colorgame[tx][ty] {
|
|
colorgame[tx][ty] = false
|
|
if v1x < 0 {
|
|
v1x = -v1x
|
|
}
|
|
display.FillRectangle(tx*gameColorsCellSize, ty*gameColorsCellSize, gameColorsCellSize, gameColorsCellSize, colorOrange)
|
|
}
|
|
tx = (p1x + gameColorsSpeed) / gameColorsCellSize
|
|
if tx >= gameColorsWidth {
|
|
tx = gameColorsWidth - 1
|
|
}
|
|
if colorgame[tx][ty] {
|
|
colorgame[tx][ty] = false
|
|
if v1x > 0 {
|
|
v1x = -v1x
|
|
}
|
|
display.FillRectangle(tx*gameColorsCellSize, ty*gameColorsCellSize, gameColorsCellSize, gameColorsCellSize, colorOrange)
|
|
}
|
|
tx = p1x / gameColorsCellSize
|
|
ty = (p1y - gameColorsSpeed) / gameColorsCellSize
|
|
if ty < 0 {
|
|
ty = 0
|
|
}
|
|
if colorgame[tx][ty] {
|
|
colorgame[tx][ty] = false
|
|
if v1y < 0 {
|
|
v1y = -v1y
|
|
}
|
|
display.FillRectangle(tx*gameColorsCellSize, ty*gameColorsCellSize, gameColorsCellSize, gameColorsCellSize, colorOrange)
|
|
}
|
|
ty = (p1y + gameColorsSpeed) / gameColorsCellSize
|
|
if ty >= gameColorsHeight {
|
|
ty = gameColorsHeight - 1
|
|
}
|
|
if colorgame[tx][ty] {
|
|
colorgame[tx][ty] = false
|
|
if v1y > 0 {
|
|
v1y = -v1y
|
|
}
|
|
display.FillRectangle(tx*gameColorsCellSize, ty*gameColorsCellSize, gameColorsCellSize, gameColorsCellSize, colorOrange)
|
|
}
|
|
|
|
// P2
|
|
tx = (p2x - gameColorsSpeed) / gameColorsCellSize
|
|
ty = p2y / gameColorsCellSize
|
|
if tx < 0 {
|
|
tx = 0
|
|
}
|
|
if !colorgame[tx][ty] {
|
|
colorgame[tx][ty] = true
|
|
if v2x < 0 {
|
|
v2x = -v2x
|
|
}
|
|
display.FillRectangle(tx*gameColorsCellSize, ty*gameColorsCellSize, gameColorsCellSize, gameColorsCellSize, colorPurple)
|
|
}
|
|
tx = (p2x + gameColorsSpeed) / gameColorsCellSize
|
|
if tx >= gameColorsWidth {
|
|
tx = gameColorsWidth - 2
|
|
}
|
|
if !colorgame[tx][ty] {
|
|
colorgame[tx][ty] = true
|
|
if v2x > 0 {
|
|
v2x = -v2x
|
|
}
|
|
display.FillRectangle(tx*gameColorsCellSize, ty*gameColorsCellSize, gameColorsCellSize, gameColorsCellSize, colorPurple)
|
|
}
|
|
tx = p2x / gameColorsCellSize
|
|
ty = (p2y - gameColorsSpeed) / gameColorsCellSize
|
|
if ty < 0 {
|
|
ty = 0
|
|
}
|
|
if !colorgame[tx][ty] {
|
|
colorgame[tx][ty] = true
|
|
if v2y < 0 {
|
|
v2y = -v2y
|
|
}
|
|
display.FillRectangle(tx*gameColorsCellSize, ty*gameColorsCellSize, gameColorsCellSize, gameColorsCellSize, colorPurple)
|
|
}
|
|
ty = (p2y + gameColorsSpeed) / gameColorsCellSize
|
|
if ty >= gameColorsHeight {
|
|
ty = gameColorsHeight - 2
|
|
}
|
|
if !colorgame[tx][ty] {
|
|
colorgame[tx][ty] = true
|
|
if v2y > 0 {
|
|
v2y = -v2y
|
|
}
|
|
display.FillRectangle(tx*gameColorsCellSize, ty*gameColorsCellSize, gameColorsCellSize, gameColorsCellSize, colorPurple)
|
|
}
|
|
|
|
display.FillRectangle(p1x-gameColorsSpeed, p1y-gameColorsSpeed, gameColorsCellSize, gameColorsCellSize, colorPurple)
|
|
display.FillRectangle(p2x-gameColorsSpeed, p2y-gameColorsSpeed, gameColorsCellSize, gameColorsCellSize, colorOrange)
|
|
|
|
getInput()
|
|
if goBack() {
|
|
break
|
|
}
|
|
|
|
time.Sleep(10 * time.Millisecond)
|
|
|
|
}
|
|
|
|
}
|