Clamping player's position horizontally, added camera

This commit is contained in:
nefrace 2023-01-06 01:20:47 +03:00
parent 6119e288f8
commit 461d177cfa
3 changed files with 29 additions and 22 deletions

42
main.go
View File

@ -11,38 +11,39 @@ var sticks []*Stick = []*Stick{}
var player *Player var player *Player
var frame uint64 = 0 var frame uint64 = 0
var lightIndex uint64 = 0 var lightIndex uint64 = 0
var camX = 0 var camX int = 0
var camY = 0 var camY int = 0
//go:export start //go:export start
func start() { func start() {
rand.Seed(654654321348654) rand.Seed(654348654)
points = []*Point{} points = []*Point{}
sticks = []*Stick{} sticks = []*Stick{}
w4.PALETTE[0] = 0xfcdeea w4.PALETTE[0] = 0xfcdeea
w4.PALETTE[1] = 0x012824 w4.PALETTE[1] = 0x012824
w4.PALETTE[2] = 0x265935 w4.PALETTE[2] = 0x265935
w4.PALETTE[3] = 0xff4d6d w4.PALETTE[3] = 0xff4d6d
for i := 0; i < 4; i++ {
for i := 0.0; i < 8; i++ {
var y1, y2 float64
if int(i)%2 == 0 {
y1 = rand.Float64()*40 - 20
y2 = rand.Float64() * 40
} else {
y1 = rand.Float64() * 40
y2 = rand.Float64()*40 - 20
}
p, s := CreateRope( p, s := CreateRope(
Vector{160, rand.Float64()*40 + float64(i*40)}, Vector{0, y1 + i*30},
Vector{0, rand.Float64()*40 + float64(i*40)}, Vector{320, y2 + i*30},
10, 14,
) )
points = append(points, p...) points = append(points, p...)
sticks = append(sticks, s...) sticks = append(sticks, s...)
} }
for i := 0; i < 3; i++ {
p, s := CreateRope(
Vector{float64(i*30 + 30), 0},
Vector{float64(i*30 + 40), 100},
10,
)
p[len(p)-1].IsLocked = false
points = append(points, p...)
sticks = append(sticks, s...)
}
player = &Player{ player = &Player{
Position: Vector{80, 80}, Position: Vector{80, 80},
Speed: Vector{}, Speed: Vector{},
@ -57,12 +58,17 @@ func update() {
*w4.DRAW_COLORS = 2 *w4.DRAW_COLORS = 2
// w4.Text("Hello from Go!", 10, 10) // w4.Text("Hello from Go!", 10, 10)
Simulate(points, sticks) Simulate(points, sticks)
player.Update()
camX, camY = int(player.Position.X)-80, int(player.Position.Y)-80
for _, s := range sticks { for _, s := range sticks {
s.Draw() s.Draw()
} }
for _, p := range points { for _, p := range points {
p.Draw() p.Draw()
} }
player.Update()
player.Draw() player.Draw()
*w4.DRAW_COLORS = 0x23
w4.Rect(-160-camX, -100-camY, 160, 500)
w4.Rect(320-camX, -100-camY, 160, 500)
} }

View File

@ -106,6 +106,7 @@ func (p *Player) Update() {
} }
} }
} }
p.Position.X = math.Min(math.Max(0, p.Position.X), 320)
} }
func (p *Player) MoveOnRope(motion Vector) { func (p *Player) MoveOnRope(motion Vector) {
@ -116,5 +117,5 @@ func (p *Player) MoveOnRope(motion Vector) {
func (p *Player) Draw() { func (p *Player) Draw() {
*w4.DRAW_COLORS = 0x34 *w4.DRAW_COLORS = 0x34
w4.Rect(int(p.Position.X)-4, int(p.Position.Y)-4, 8, 8) w4.Rect(int(p.Position.X)-4-camX, int(p.Position.Y)-4-camY, 8, 8)
} }

View File

@ -31,7 +31,7 @@ func (p *Point) Draw() {
if fr > 40 { if fr > 40 {
*w4.DRAW_COLORS = 0x34 *w4.DRAW_COLORS = 0x34
} }
w4.Oval(int(p.Position.X)-2, int(p.Position.Y)-2, 4, 4) w4.Oval(int(p.Position.X)-2-camX, int(p.Position.Y)-2-camY, 4, 4)
} }
type Stick struct { type Stick struct {
@ -80,8 +80,8 @@ func (s *Stick) GetOffset(p Vector) float64 {
func (s *Stick) Draw() { func (s *Stick) Draw() {
*w4.DRAW_COLORS = 0x3 *w4.DRAW_COLORS = 0x3
w4.Line(int(s.PointA.Position.X), int(s.PointA.Position.Y), w4.Line(int(s.PointA.Position.X)-camX, int(s.PointA.Position.Y)-camY,
int(s.PointB.Position.X), int(s.PointB.Position.Y)) int(s.PointB.Position.X)-camX, int(s.PointB.Position.Y)-camY)
} }
func Simulate(points []*Point, sticks []*Stick) { func Simulate(points []*Point, sticks []*Stick) {