From efc9585abc6db21b2c882a361c7bddee1a2b13fa Mon Sep 17 00:00:00 2001 From: Joop Kiefte Date: Mon, 7 Sep 2020 05:39:11 +0200 Subject: Adding foundation for wall kicks --- tris/core.go | 4 ++++ tris/srs.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 tris/srs.go (limited to 'tris') diff --git a/tris/core.go b/tris/core.go index 4824ead..af46311 100644 --- a/tris/core.go +++ b/tris/core.go @@ -9,6 +9,10 @@ type Point struct { X, Y int } +func (p Point) Add(q Point) Point { + return Point{X: p.X+q.X, Y: p.Y+q.Y} +} + type Piece [4]uint16 // A table that represents each piece from https://tetris.fandom.com/wiki/SRS diff --git a/tris/srs.go b/tris/srs.go new file mode 100644 index 0000000..d6c8220 --- /dev/null +++ b/tris/srs.go @@ -0,0 +1,32 @@ +package tris + +// As at the bottom of https://tetris.fandom.com/wiki/SRS but Y inverse because we start Y at the top +type Kicks map[Rotation][]Point + +var K3CW = Kicks{ + 0: {{X:0, Y:0}, {X:-1, Y:0}, {X:-1, Y: -1}, {X:0, Y:2}, {X:-1, Y:2}}, + 1: {{X:0, Y:0}, {X:1, Y:0}, {X:1, Y: 1}, {X:0, Y:-2}, {X:1, Y:-2}}, + 2: {{X:0, Y:0}, {X:1, Y:0}, {X:1, Y: -1}, {X:0, Y:2}, {X:1, Y:2}}, + 3: {{X:0, Y:0}, {X:-1, Y:0}, {X:-1, Y: 1}, {X:0, Y:-2}, {X:-1, Y:-2}}, +} + +var K3CCW = Kicks{ + 1: {{X:0, Y:0}, {X:1, Y:0}, {X:1, Y: 1}, {X:0, Y:-2}, {X:1, Y:-2}}, + 2: {{X:0, Y:0}, {X:-1, Y:0}, {X:-1, Y:-1}, {X:0, Y:2}, {X:-1, Y:2}}, + 3: {{X:0, Y:0}, {X:-1, Y:0}, {X:-1, Y: 1}, {X:0, Y:-2}, {X:-1, Y:-2}}, + 0: {{X:0, Y:0}, {X:1, Y:0}, {X:1, Y: -1}, {X:0, Y:2}, {X:1, Y:2}}, +} + +var LCW = Kicks{ + 0: {{X:0, Y:0}, {X:-2, Y:0}, {X:1, Y: 0}, {X:-2, Y:1}, {X:1, Y:-2}}, + 1: {{X:0, Y:0}, {X:-1, Y:0}, {X:2, Y: 0}, {X:-1, Y:-2}, {X:2, Y:1}}, + 2: {{X:0, Y:0}, {X:2, Y:0}, {X:-1, Y: 0}, {X:2, Y:-1}, {X:-1, Y:2}}, + 3: {{X:0, Y:0}, {X:1, Y:0}, {X:-2, Y: 0}, {X:1, Y:2}, {X:-2, Y:-1}}, +} + +var LCCW = Kicks{ + 1: {{X:0, Y:0}, {X:2, Y:0}, {X:-1, Y: 0}, {X:2, Y:-1}, {X:-1, Y:2}}, + 2: {{X:0, Y:0}, {X:1, Y:0}, {X:-2, Y: 0}, {X:1, Y:2}, {X:-2, Y:-1}}, + 3: {{X:0, Y:0}, {X:-2, Y:0}, {X:1, Y: 0}, {X:-2, Y:1}, {X:1, Y:-2}}, + 0: {{X:0, Y:0}, {X:-1, Y:0}, {X:2, Y: 0}, {X:-1, Y:-2}, {X:2, Y:1}}, +} -- cgit v1.2.3-70-g09d2