summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Chausse <benjamin@chausse.xyz>2020-01-19 22:00:35 -0500
committerBenjamin Chausse <benjamin@chausse.xyz>2020-01-19 22:00:35 -0500
commitec217654a6e497383e21bb09fe32e7b4abed9b12 (patch)
treefdff78a6df8a696211fcdc99cab68ee0fbb1edc5
parente85463a03763416c0cf17d96b4e06761468a45e1 (diff)
Blank screen between players
-rw-r--r--aesthetics.go13
-rw-r--r--main.go29
2 files changed, 40 insertions, 2 deletions
diff --git a/aesthetics.go b/aesthetics.go
index 9766f92..4d6909f 100644
--- a/aesthetics.go
+++ b/aesthetics.go
@@ -4,6 +4,7 @@ package main
// display or setup visuals without the use of tview.
import (
+ "github.com/mbndr/figlet4go"
"strconv"
)
@@ -108,6 +109,18 @@ var boatchars = [2][7]string{
{`~`, `△`, `▽`, `◁`, `▷`, `▯`, `▭`},
}
+func figletWrite(text string) string {
+ ascii := figlet4go.NewAsciiRender()
+ options := figlet4go.NewRenderOptions()
+ options.FontName = "larry3d"
+ options.FontColor = []figlet4go.Color{
+ figlet4go.ColorCyan,
+ }
+ // The underscore would be an error
+ renderStr, _ := ascii.Render(text)
+ return renderStr
+}
+
// This constant keeps information about boats that aren't totally sunk secret.
// It therefore substitues the shape of a boat on the target board when it is unsunk.
const misteryHit = `▣`
diff --git a/main.go b/main.go
index 2edaeff..46e0403 100644
--- a/main.go
+++ b/main.go
@@ -163,8 +163,7 @@ func main() {
var log string = "Game Started!"
// Until Somedody Wins:
- for winner := currentPlayer; !(winner.gains == [5]bool{true, true, true, true, true}); {
- currentPlayer.Hit(9, 9)
+ for winner := currentPlayer; winner.gains != [5]bool{true, true, true, true, true}; {
// Make the loop toggle between both players
if currentPlayer == &playerTwo {
@@ -273,5 +272,31 @@ func main() {
if err := app.SetRoot(dashboard, true).Run(); err != nil {
panic(err)
}
+
+ waitScreen := tv.NewApplication()
+ waitText := tv.NewTextView().SetDoneFunc(func(key tc.Key) {
+ if key == tc.KeyEnter {
+ waitScreen.Stop()
+ }
+ if key == tc.KeyEscape {
+ for i := 0; i < 5; i++ {
+ playerOne.gains[i] = true
+ playerTwo.gains[i] = true
+ waitScreen.Stop()
+ }
+ }
+ })
+
+ fmt.Fprint(waitText, "Waiting for:\n", figletWrite(currentPlayer.name), "\nPress Enter to continue...")
+
+ if winner.gains != [5]bool{true, true, true, true, true} {
+ if err := waitScreen.SetRoot(waitText, true).Run(); err != nil {
+ panic(err)
+ } else if (winner.gains == [5]bool{true, true, true, true, true}) && (winner.prey.gains != [5]bool{true, true, true, true, true}) {
+ waitText.Clear()
+ fmt.Fprint(waitText, figletWrite(winner.name), "\n", figletWrite("is the winner!"))
+ }
+ }
+
}
}