Tic Tac Toe Game – Fyne Golang tutorial Source Code

Tic Tac Toe Game – Fyne Golang tutorial Source Code
This is one of the project, I created while fixing someone coding problem. Hisham from india contacted to fix his golang program. while working on his code the idea came to my mind and I did it.
This code is not clean and need to be optimised. But I don’t know when I will fix it. So I posted as it is.
You can do whatever you want and can modify code, change images and colors to make it more attractive.
It has too much junk code also. Hope so I will fix it soon.
I have used 9 icons. It means we have 9 places to click. So we have 9 buttons also.
I have container.withoutlayout to arrange icons and button the way I want.
The default window size is 400×400.
A dialog box is used to  show result and also show when you start game.
In tic tac toe we have total 9 places. It mean one array/slice to store 9 places.
one array will store the human chosen “places”.
one array will store the machine chosen “places”
Here is the combination of successful result.
123
456
789
147
258
369
159
357
I have created a struct “combination” for 3 values. If one of these 3 places are used by human or system player. Winner will announced. Otherwise the process will continue.
Random function
Random function is used for system player. It will randomly select a number from 1 to 9.
It will check . If the place is used(already filled) by human player. It will fire again the random function and regenarate the number. and select the random number for human.

Download

Source Code
</div>
<div>
<div>
<div>package main</div>
<div>// import fyne</div>
<div>import (</div>
<div>    "fmt"</div>
<div>    "image/color"</div>
<div>    "math/rand"</div>
<div>    "time"</div>
<div>    "fyne.io/fyne/v2"</div>
<div>    "fyne.io/fyne/v2/app"</div>
<div>    "fyne.io/fyne/v2/canvas"</div>
<div>    "fyne.io/fyne/v2/container"</div>
<div>    "fyne.io/fyne/v2/dialog"</div>
<div>    "fyne.io/fyne/v2/widget"</div>
<div>)</div>
<div>type Combinations struct {</div>
<div>    A int</div>
<div>    B int</div>
<div>    C int</div>
<div>}</div>
<div>func myRand(s [9]int) int {</div>
<div>    rand.Seed(time.Now().UnixNano())</div>
<div>    for i := 0; i &lt; 9; i++ {</div>
<div>        randIdx := rand.Intn(len(s))</div>
<div>        if s[randIdx] == 0 {</div>
<div>            //fmt.Println("Randomly selected slice value : ", s[randIdx], randIdx)</div>
<div>            return randIdx</div>
<div>        }</div>
<div>    }</div>
<div>    return 0</div>
<div>}</div>
<div>func main() {</div>
<div>    a := app.New()</div>
<div>    w := a.NewWindow("Tic Tac Toe View")</div>
<div>    w.Resize(fyne.NewSize(400, 400))</div>
<div>    // empty slice for storing the places of the tic tac toe board</div>
<div>    // question mark image url</div>
<div>    question_asset := "C:/assets/question-mark2.png"</div>
<div>    slice1 := [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}</div>
<div>    slice1_sys := [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0}</div>
<div>    slice2 := []Combinations{</div>
<div>        {1, 2, 3}, {4, 5, 6}, {7, 8, 9},</div>
<div>        {1, 4, 7}, {2, 5, 8}, {3, 6, 9},</div>
<div>        {1, 5, 9}, {3, 5, 7},</div>
<div>    }</div>
<div>    label := widget.NewLabel("Get Ready")</div>
<div>    label.Alignment = fyne.TextAlignCenter</div>
<div>    dlg := dialog.NewCustom("Tic Tac Toe", "OK", label, w)</div>
<div>    dlg.Show()</div>
<div>    //print(slice1)</div>
<div>    // iconFile, err := os.Open("C:/assets/question-mark2.png")</div>
<div>    // if err != nil {</div>
<div>    //  log.Fatal(err)</div>
<div>    // }</div>
<div>    // r := bufio.NewReader(iconFile)</div>
<div>    // b, err := ioutil.ReadAll(r)</div>
<div>    // if err != nil {</div>
<div>    //  log.Fatal(err)</div>
<div>    // }</div>
<div>    // btn := widget.NewButtonWithIcon("X", fyne.NewStaticResource("icon", b), func() {</div>
<div>    //  // do something</div>
<div>    // })</div>
<div>    // btn.Move(fyne.NewPos(50, 50))</div>
<div>    // btn.Resize(fyne.NewSize(100, 100))</div>
<div>    ////////////////////</div>
<div>    title_result := widget.NewLabel("Tic Tac Toe")</div>
<div>    title_result.Move(fyne.NewPos(50, 10))</div>
<div>    ///////////////////////</div>
<div>    icon1 := canvas.NewImageFromFile(question_asset)</div>
<div>    ////</div>
<div>    icon2 := canvas.NewImageFromFile(question_asset)</div>
<div>    ///</div>
<div>    icon3 := canvas.NewImageFromFile(question_asset)</div>
<div>    ////</div>
<div>    icon4 := canvas.NewImageFromFile(question_asset)</div>
<div>    ////</div>
<div>    icon5 := canvas.NewImageFromFile(question_asset)</div>
<div>    ///</div>
<div>    icon6 := canvas.NewImageFromFile(question_asset)</div>
<div>    ///</div>
<div>    icon7 := canvas.NewImageFromFile(question_asset)</div>
<div>    ///</div>
<div>    icon8 := canvas.NewImageFromFile(question_asset)</div>
<div>    //</div>
<div>    icon9 := canvas.NewImageFromFile(question_asset)</div>
<div>    ///</div>
<div>    icon1.Move(fyne.NewPos(50, 50))</div>
<div>    icon1.Resize(fyne.NewSize(80, 80))</div>
<div>    btn1_label := ""</div>
<div>    btn1 := widget.NewButton(btn1_label, func() {</div>
<div>        if btn1_label == "" {</div>
<div>            btn1_label = "X"</div>
<div>            icon1.File = "C:/assets/cat.png"</div>
<div>            icon1.Refresh()</div>
<div>            //print(btn1_label)</div>
<div>        } else if btn1_label == "X" {</div>
<div>            btn1_label = "O"</div>
<div>            icon1.File = "C:/assets/dog.png"</div>
<div>            icon1.Refresh()</div>
<div>            //print(btn1_label)</div>
<div>        } else if btn1_label == "O" {</div>
<div>            btn1_label = "X"</div>
<div>            //print(btn1_label)</div>
<div>        }</div>
<div>        slice1[0] = 1</div>
<div>        //fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1 {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "You Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "You Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        store_rand_val := myRand(slice1)</div>
<div>        //fmt.Println("Randomly selected slice value : ", myRand(slice1))</div>
<div>        // I am using using 420 to avoid conflict</div>
<div>        slice1[store_rand_val] = 420</div>
<div>        slice1_sys[store_rand_val] = store_rand_val + 1</div>
<div>        // start of sys icon change</div>
<div>        if (store_rand_val + 1) == 1 {</div>
<div>            icon1.File = "C:/assets/robot.png"</div>
<div>            icon1.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 2 {</div>
<div>            icon2.File = "C:/assets/robot.png"</div>
<div>            icon2.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 3 {</div>
<div>            icon3.File = "C:/assets/robot.png"</div>
<div>            icon3.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 4 {</div>
<div>            icon4.File = "C:/assets/robot.png"</div>
<div>            icon4.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 5 {</div>
<div>            icon5.File = "C:/assets/robot.png"</div>
<div>            icon5.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 6 {</div>
<div>            icon6.File = "C:/assets/robot.png"</div>
<div>            icon6.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 7 {</div>
<div>            icon7.File = "C:/assets/robot.png"</div>
<div>            icon7.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 8 {</div>
<div>            icon8.File = "C:/assets/robot.png"</div>
<div>            icon8.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 9 {</div>
<div>            icon9.File = "C:/assets/robot.png"</div>
<div>            icon9.Refresh()</div>
<div>        }</div>
<div>        // end of sys icon change</div>
<div>        fmt.Println(slice1_sys)</div>
<div>        fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1_sys {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "System Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "System Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>    })</div>
<div>    btn1.Move(fyne.NewPos(50, 50))</div>
<div>    btn1.Resize(fyne.NewSize(100, 100))</div>
<div>    ///////////////////////////</div>
<div>    icon2.Move(fyne.NewPos(150, 50))</div>
<div>    icon2.Resize(fyne.NewSize(80, 80))</div>
<div>    btn2_label := ""</div>
<div>    btn2 := widget.NewButton(btn2_label, func() {</div>
<div>        if btn2_label == "" {</div>
<div>            btn2_label = "X"</div>
<div>            icon2.File = "C:/assets/cat.png"</div>
<div>            icon2.Refresh()</div>
<div>            print(btn2_label)</div>
<div>        } else if btn2_label == "X" {</div>
<div>            btn2_label = "O"</div>
<div>            icon2.File = "C:/assets/dog.png"</div>
<div>            icon2.Refresh()</div>
<div>            print(btn2_label)</div>
<div>        } else if btn2_label == "O" {</div>
<div>            btn2_label = "X"</div>
<div>            icon2.File = "C:/assets/cat.png"</div>
<div>            icon2.Refresh()</div>
<div>            //print(btn2_label)</div>
<div>        }</div>
<div>        slice1[1] = 2</div>
<div>        //fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1 {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                //fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "You Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "You Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // 2nd check for system</div>
<div>        store_rand_val := myRand(slice1)</div>
<div>        //fmt.Println("Randomly selected slice value : ", myRand(slice1))</div>
<div>        // I am using using 420 to avoid conflict</div>
<div>        slice1[store_rand_val] = 420</div>
<div>        slice1_sys[store_rand_val] = store_rand_val + 1</div>
<div>        //sys icon change</div>
<div>        if (store_rand_val + 1) == 1 {</div>
<div>            icon1.File = "C:/assets/robot.png"</div>
<div>            icon1.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 2 {</div>
<div>            icon2.File = "C:/assets/robot.png"</div>
<div>            icon2.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 3 {</div>
<div>            icon3.File = "C:/assets/robot.png"</div>
<div>            icon3.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 4 {</div>
<div>            icon4.File = "C:/assets/robot.png"</div>
<div>            icon4.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 5 {</div>
<div>            icon5.File = "C:/assets/robot.png"</div>
<div>            icon5.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 6 {</div>
<div>            icon6.File = "C:/assets/robot.png"</div>
<div>            icon6.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 7 {</div>
<div>            icon7.File = "C:/assets/robot.png"</div>
<div>            icon7.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 8 {</div>
<div>            icon8.File = "C:/assets/robot.png"</div>
<div>            icon8.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 9 {</div>
<div>            icon9.File = "C:/assets/robot.png"</div>
<div>            icon9.Refresh()</div>
<div>        }</div>
<div>        // end of system icon change</div>
<div>        fmt.Println(slice1_sys)</div>
<div>        fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1_sys {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "System Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "System Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // end of 2nd check for sys</div>
<div>    })</div>
<div>    btn2.Move(fyne.NewPos(150, 50))</div>
<div>    btn2.Resize(fyne.NewSize(100, 100))</div>
<div>    ///////////////////////////</div>
<div>    // icon3 := canvas.NewImageFromFile(question_asset)</div>
<div>    icon3.Move(fyne.NewPos(250, 50))</div>
<div>    icon3.Resize(fyne.NewSize(80, 80))</div>
<div>    btn3_label := ""</div>
<div>    btn3 := widget.NewButton(btn3_label, func() {</div>
<div>        if btn3_label == "" {</div>
<div>            btn3_label = "X"</div>
<div>            icon3.File = "C:/assets/cat.png"</div>
<div>            icon3.Refresh()</div>
<div>            //print(btn3_label)</div>
<div>        } else if btn3_label == "X" {</div>
<div>            btn3_label = "O"</div>
<div>            icon3.File = "C:/assets/dog.png"</div>
<div>            icon3.Refresh()</div>
<div>            //print(btn3_label)</div>
<div>        } else if btn3_label == "O" {</div>
<div>            btn3_label = "X"</div>
<div>            icon3.File = "C:/assets/cat.png"</div>
<div>            icon3.Refresh()</div>
<div>            //print(btn3_label)</div>
<div>        }</div>
<div>        slice1[2] = 3</div>
<div>        //fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1 {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                } // else {</div>
<div>                //  score_check[0] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].B == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[1] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].C == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[2] = "fail"</div>
<div>                // }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "You Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "You Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // start of 2nd check for system</div>
<div>        store_rand_val := myRand(slice1)</div>
<div>        //fmt.Println("Randomly selected slice value : ", myRand(slice1))</div>
<div>        // I am using using 420 to avoid conflict</div>
<div>        slice1[store_rand_val] = 420</div>
<div>        slice1_sys[store_rand_val] = store_rand_val + 1</div>
<div>        // start of system icon change</div>
<div>        if (store_rand_val + 1) == 1 {</div>
<div>            icon1.File = "C:/assets/robot.png"</div>
<div>            icon1.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 2 {</div>
<div>            icon2.File = "C:/assets/robot.png"</div>
<div>            icon2.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 3 {</div>
<div>            icon3.File = "C:/assets/robot.png"</div>
<div>            icon3.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 4 {</div>
<div>            icon4.File = "C:/assets/robot.png"</div>
<div>            icon4.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 5 {</div>
<div>            icon5.File = "C:/assets/robot.png"</div>
<div>            icon5.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 6 {</div>
<div>            icon6.File = "C:/assets/robot.png"</div>
<div>            icon6.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 7 {</div>
<div>            icon7.File = "C:/assets/robot.png"</div>
<div>            icon7.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 8 {</div>
<div>            icon8.File = "C:/assets/robot.png"</div>
<div>            icon8.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 9 {</div>
<div>            icon9.File = "C:/assets/robot.png"</div>
<div>            icon9.Refresh()</div>
<div>        }</div>
<div>        // end of system icon change</div>
<div>        fmt.Println(slice1_sys)</div>
<div>        fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1_sys {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "System Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "System Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // end of 2nd check for system</div>
<div>    })</div>
<div>    btn3.Move(fyne.NewPos(250, 50))</div>
<div>    btn3.Resize(fyne.NewSize(100, 100))</div>
<div>    ///////////////////////////</div>
<div>    // icon4 := canvas.NewImageFromFile(question_asset)</div>
<div>    icon4.Move(fyne.NewPos(50, 150))</div>
<div>    icon4.Resize(fyne.NewSize(80, 80))</div>
<div>    btn4_label := ""</div>
<div>    btn4 := widget.NewButton(btn4_label, func() {</div>
<div>        if btn4_label == "" {</div>
<div>            btn4_label = "X"</div>
<div>            icon4.File = "C:/assets/cat.png"</div>
<div>            icon4.Refresh()</div>
<div>            //print(btn4_label)</div>
<div>        } else if btn4_label == "X" {</div>
<div>            btn4_label = "O"</div>
<div>            icon4.File = "C:/assets/dog.png"</div>
<div>            icon4.Refresh()</div>
<div>            //print(btn4_label)</div>
<div>        } else if btn4_label == "O" {</div>
<div>            btn4_label = "X"</div>
<div>            icon4.File = "C:/assets/cat.png"</div>
<div>            icon4.Refresh()</div>
<div>            //print(btn4_label)</div>
<div>        }</div>
<div>        slice1[3] = 4</div>
<div>        //fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1 {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                } // else {</div>
<div>                //  score_check[0] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].B == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[1] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].C == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[2] = "fail"</div>
<div>                // }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "You Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "You Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // start of 2nd check for system win</div>
<div>        store_rand_val := myRand(slice1)</div>
<div>        //fmt.Println("Randomly selected slice value : ", myRand(slice1))</div>
<div>        // I am using using 420 to avoid conflict</div>
<div>        slice1[store_rand_val] = 420</div>
<div>        slice1_sys[store_rand_val] = store_rand_val + 1</div>
<div>        // start of sys icon change</div>
<div>        if (store_rand_val + 1) == 1 {</div>
<div>            icon1.File = "C:/assets/robot.png"</div>
<div>            icon1.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 2 {</div>
<div>            icon2.File = "C:/assets/robot.png"</div>
<div>            icon2.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 3 {</div>
<div>            icon3.File = "C:/assets/robot.png"</div>
<div>            icon3.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 4 {</div>
<div>            icon4.File = "C:/assets/robot.png"</div>
<div>            icon4.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 5 {</div>
<div>            icon5.File = "C:/assets/robot.png"</div>
<div>            icon5.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 6 {</div>
<div>            icon6.File = "C:/assets/robot.png"</div>
<div>            icon6.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 7 {</div>
<div>            icon7.File = "C:/assets/robot.png"</div>
<div>            icon7.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 8 {</div>
<div>            icon8.File = "C:/assets/robot.png"</div>
<div>            icon8.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 9 {</div>
<div>            icon9.File = "C:/assets/robot.png"</div>
<div>            icon9.Refresh()</div>
<div>        }</div>
<div>        // end of sys icon change</div>
<div>        fmt.Println(slice1_sys)</div>
<div>        fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1_sys {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "System Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "System Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // end of 2nd check for system win</div>
<div>    })</div>
<div>    btn4.Move(fyne.NewPos(50, 150))</div>
<div>    btn4.Resize(fyne.NewSize(100, 100))</div>
<div>    ///////////////////////////</div>
<div>    //icon5 := canvas.NewImageFromFile(question_asset)</div>
<div>    icon5.Move(fyne.NewPos(150, 150))</div>
<div>    icon5.Resize(fyne.NewSize(80, 80))</div>
<div>    btn5_label := ""</div>
<div>    btn5 := widget.NewButton(btn5_label, func() {</div>
<div>        if btn5_label == "" {</div>
<div>            btn5_label = "X"</div>
<div>            icon5.File = "C:/assets/cat.png"</div>
<div>            icon5.Refresh()</div>
<div>            print(btn5_label)</div>
<div>        } else if btn5_label == "X" {</div>
<div>            btn5_label = "O"</div>
<div>            icon5.File = "C:/assets/dog.png"</div>
<div>            icon5.Refresh()</div>
<div>            print(btn5_label)</div>
<div>        } else if btn5_label == "O" {</div>
<div>            btn5_label = "X"</div>
<div>            icon5.File = "C:/assets/cat.png"</div>
<div>            icon5.Refresh()</div>
<div>            print(btn5_label)</div>
<div>        }</div>
<div>        slice1[4] = 5</div>
<div>        //fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1 {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                } // else {</div>
<div>                //  score_check[0] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].B == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[1] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].C == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[2] = "fail"</div>
<div>                // }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "You Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "You Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // start of 2nd check for system win</div>
<div>        store_rand_val := myRand(slice1)</div>
<div>        //fmt.Println("Randomly selected slice value : ", myRand(slice1))</div>
<div>        // I am using using 420 to avoid conflict</div>
<div>        slice1[store_rand_val] = 420</div>
<div>        slice1_sys[store_rand_val] = store_rand_val + 1</div>
<div>        // start of system icon change</div>
<div>        if (store_rand_val + 1) == 1 {</div>
<div>            icon1.File = "C:/assets/robot.png"</div>
<div>            icon1.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 2 {</div>
<div>            icon2.File = "C:/assets/robot.png"</div>
<div>            icon2.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 3 {</div>
<div>            icon3.File = "C:/assets/robot.png"</div>
<div>            icon3.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 4 {</div>
<div>            icon4.File = "C:/assets/robot.png"</div>
<div>            icon4.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 5 {</div>
<div>            icon5.File = "C:/assets/robot.png"</div>
<div>            icon5.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 6 {</div>
<div>            icon6.File = "C:/assets/robot.png"</div>
<div>            icon6.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 7 {</div>
<div>            icon7.File = "C:/assets/robot.png"</div>
<div>            icon7.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 8 {</div>
<div>            icon8.File = "C:/assets/robot.png"</div>
<div>            icon8.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 9 {</div>
<div>            icon9.File = "C:/assets/robot.png"</div>
<div>            icon9.Refresh()</div>
<div>        }</div>
<div>        // end of system icon change</div>
<div>        fmt.Println(slice1_sys)</div>
<div>        fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1_sys {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "System Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "System Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // end of 2nd check for system win</div>
<div>    })</div>
<div>    btn5.Move(fyne.NewPos(150, 150))</div>
<div>    btn5.Resize(fyne.NewSize(100, 100))</div>
<div>    ///////////////////////////</div>
<div>    //icon6 := canvas.NewImageFromFile(question_asset)</div>
<div>    icon6.Move(fyne.NewPos(250, 150))</div>
<div>    icon6.Resize(fyne.NewSize(80, 80))</div>
<div>    btn6_label := ""</div>
<div>    btn6 := widget.NewButton(btn6_label, func() {</div>
<div>        if btn6_label == "" {</div>
<div>            btn6_label = "X"</div>
<div>            icon6.File = "C:/assets/cat.png"</div>
<div>            icon6.Refresh()</div>
<div>            print(btn6_label)</div>
<div>        } else if btn6_label == "X" {</div>
<div>            btn6_label = "O"</div>
<div>            icon6.File = "C:/assets/dog.png"</div>
<div>            icon6.Refresh()</div>
<div>            print(btn6_label)</div>
<div>        } else if btn6_label == "O" {</div>
<div>            btn6_label = "X"</div>
<div>            icon6.File = "C:/assets/cat.png"</div>
<div>            icon6.Refresh()</div>
<div>            print(btn6_label)</div>
<div>        }</div>
<div>        slice1[5] = 6</div>
<div>        //fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1 {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                } // else {</div>
<div>                //  score_check[0] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].B == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[1] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].C == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[2] = "fail"</div>
<div>                // }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "You Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "You Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // start of 2nd check for system win</div>
<div>        store_rand_val := myRand(slice1)</div>
<div>        //fmt.Println("Randomly selected slice value : ", myRand(slice1))</div>
<div>        // I am using using 420 to avoid conflict</div>
<div>        slice1[store_rand_val] = 420</div>
<div>        slice1_sys[store_rand_val] = store_rand_val + 1</div>
<div>        // start of system icon change</div>
<div>        if (store_rand_val + 1) == 1 {</div>
<div>            icon1.File = "C:/assets/robot.png"</div>
<div>            icon1.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 2 {</div>
<div>            icon2.File = "C:/assets/robot.png"</div>
<div>            icon2.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 3 {</div>
<div>            icon3.File = "C:/assets/robot.png"</div>
<div>            icon3.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 4 {</div>
<div>            icon4.File = "C:/assets/robot.png"</div>
<div>            icon4.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 5 {</div>
<div>            icon5.File = "C:/assets/robot.png"</div>
<div>            icon5.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 6 {</div>
<div>            icon6.File = "C:/assets/robot.png"</div>
<div>            icon6.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 7 {</div>
<div>            icon7.File = "C:/assets/robot.png"</div>
<div>            icon7.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 8 {</div>
<div>            icon8.File = "C:/assets/robot.png"</div>
<div>            icon8.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 9 {</div>
<div>            icon9.File = "C:/assets/robot.png"</div>
<div>            icon9.Refresh()</div>
<div>        }</div>
<div>        // end of system icon change</div>
<div>        fmt.Println(slice1_sys)</div>
<div>        fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1_sys {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "System Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "System Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // end of 2nd check for system win</div>
<div>    })</div>
<div>    btn6.Move(fyne.NewPos(250, 150))</div>
<div>    btn6.Resize(fyne.NewSize(100, 100))</div>
<div>    ///////////////////////////</div>
<div>    //icon7 := canvas.NewImageFromFile(question_asset)</div>
<div>    icon7.Move(fyne.NewPos(50, 250))</div>
<div>    icon7.Resize(fyne.NewSize(80, 80))</div>
<div>    btn7_label := ""</div>
<div>    btn7 := widget.NewButton(btn7_label, func() {</div>
<div>        if btn7_label == "" {</div>
<div>            btn7_label = "X"</div>
<div>            icon7.File = "C:/assets/cat.png"</div>
<div>            icon7.Refresh()</div>
<div>            print(btn7_label)</div>
<div>        } else if btn7_label == "X" {</div>
<div>            btn7_label = "O"</div>
<div>            icon7.File = "C:/assets/dog.png"</div>
<div>            icon7.Refresh()</div>
<div>            print(btn7_label)</div>
<div>        } else if btn7_label == "O" {</div>
<div>            btn7_label = "X"</div>
<div>            icon7.File = "C:/assets/cat.png"</div>
<div>            icon7.Refresh()</div>
<div>            print(btn7_label)</div>
<div>        }</div>
<div>        slice1[6] = 7</div>
<div>        //fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1 {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                } // else {</div>
<div>                //  score_check[0] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].B == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[1] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].C == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[2] = "fail"</div>
<div>                // }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "You Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "You Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // start of 2nd check for system win</div>
<div>        store_rand_val := myRand(slice1)</div>
<div>        //fmt.Println("Randomly selected slice value : ", myRand(slice1))</div>
<div>        // I am using using 420 to avoid conflict</div>
<div>        slice1[store_rand_val] = 420</div>
<div>        slice1_sys[store_rand_val] = store_rand_val + 1</div>
<div>        // start of system icon change</div>
<div>        if (store_rand_val + 1) == 1 {</div>
<div>            icon1.File = "C:/assets/robot.png"</div>
<div>            icon1.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 2 {</div>
<div>            icon2.File = "C:/assets/robot.png"</div>
<div>            icon2.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 3 {</div>
<div>            icon3.File = "C:/assets/robot.png"</div>
<div>            icon3.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 4 {</div>
<div>            icon4.File = "C:/assets/robot.png"</div>
<div>            icon4.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 5 {</div>
<div>            icon5.File = "C:/assets/robot.png"</div>
<div>            icon5.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 6 {</div>
<div>            icon6.File = "C:/assets/robot.png"</div>
<div>            icon6.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 7 {</div>
<div>            icon7.File = "C:/assets/robot.png"</div>
<div>            icon7.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 8 {</div>
<div>            icon8.File = "C:/assets/robot.png"</div>
<div>            icon8.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 9 {</div>
<div>            icon9.File = "C:/assets/robot.png"</div>
<div>            icon9.Refresh()</div>
<div>        }</div>
<div>        // end of system icon change</div>
<div>        fmt.Println(slice1_sys)</div>
<div>        fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1_sys {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "System Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "System Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // end of 2nd check for system win</div>
<div>    })</div>
<div>    btn7.Move(fyne.NewPos(50, 250))</div>
<div>    btn7.Resize(fyne.NewSize(100, 100))</div>
<div>    ///////////////////////////</div>
<div>    //icon8 := canvas.NewImageFromFile(question_asset)</div>
<div>    icon8.Move(fyne.NewPos(150, 250))</div>
<div>    icon8.Resize(fyne.NewSize(80, 80))</div>
<div>    btn8_label := ""</div>
<div>    btn8 := widget.NewButton(btn8_label, func() {</div>
<div>        if btn8_label == "" {</div>
<div>            btn8_label = "X"</div>
<div>            icon8.File = "C:/assets/cat.png"</div>
<div>            icon8.Refresh()</div>
<div>            print(btn8_label)</div>
<div>        } else if btn8_label == "X" {</div>
<div>            btn8_label = "O"</div>
<div>            icon8.File = "C:/assets/dog.png"</div>
<div>            icon8.Refresh()</div>
<div>            print(btn8_label)</div>
<div>        } else if btn8_label == "O" {</div>
<div>            btn8_label = "X"</div>
<div>            icon8.File = "C:/assets/cat.png"</div>
<div>            icon8.Refresh()</div>
<div>            print(btn8_label)</div>
<div>        }</div>
<div>        slice1[7] = 8</div>
<div>        //fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1 {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                } // else {</div>
<div>                //  score_check[0] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].B == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[1] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].C == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[2] = "fail"</div>
<div>                // }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "You Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "You Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // start of check for system win</div>
<div>        store_rand_val := myRand(slice1)</div>
<div>        //fmt.Println("Randomly selected slice value : ", myRand(slice1))</div>
<div>        // I am using using 420 to avoid conflict</div>
<div>        slice1[store_rand_val] = 420</div>
<div>        slice1_sys[store_rand_val] = store_rand_val + 1</div>
<div>        // start of system icon change</div>
<div>        if (store_rand_val + 1) == 1 {</div>
<div>            icon1.File = "C:/assets/robot.png"</div>
<div>            icon1.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 2 {</div>
<div>            icon2.File = "C:/assets/robot.png"</div>
<div>            icon2.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 3 {</div>
<div>            icon3.File = "C:/assets/robot.png"</div>
<div>            icon3.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 4 {</div>
<div>            icon4.File = "C:/assets/robot.png"</div>
<div>            icon4.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 5 {</div>
<div>            icon5.File = "C:/assets/robot.png"</div>
<div>            icon5.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 6 {</div>
<div>            icon6.File = "C:/assets/robot.png"</div>
<div>            icon6.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 7 {</div>
<div>            icon7.File = "C:/assets/robot.png"</div>
<div>            icon7.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 8 {</div>
<div>            icon8.File = "C:/assets/robot.png"</div>
<div>            icon8.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 9 {</div>
<div>            icon9.File = "C:/assets/robot.png"</div>
<div>            icon9.Refresh()</div>
<div>        }</div>
<div>        // end of system icon change</div>
<div>        fmt.Println(slice1_sys)</div>
<div>        fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1_sys {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "System Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "System Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // end of check for system win</div>
<div>    })</div>
<div>    btn8.Move(fyne.NewPos(150, 250))</div>
<div>    btn8.Resize(fyne.NewSize(100, 100))</div>
<div>    ///////////////////////////</div>
<div>    //icon9 := canvas.NewImageFromFile(question_asset)</div>
<div>    icon9.Move(fyne.NewPos(250, 250))</div>
<div>    icon9.Resize(fyne.NewSize(80, 80))</div>
<div>    btn9_label := ""</div>
<div>    btn9 := widget.NewButton(btn9_label, func() {</div>
<div>        if btn9_label == "" {</div>
<div>            btn9_label = "X"</div>
<div>            icon9.File = "C:/assets/cat.png"</div>
<div>            icon9.Refresh()</div>
<div>            print(btn9_label)</div>
<div>        } else if btn9_label == "X" {</div>
<div>            btn9_label = "O"</div>
<div>            icon9.File = "C:/assets/dog.png"</div>
<div>            icon9.Refresh()</div>
<div>            print(btn9_label)</div>
<div>        } else if btn9_label == "O" {</div>
<div>            btn9_label = "X"</div>
<div>            icon9.File = "C:/assets/cat.png"</div>
<div>            icon9.Refresh()</div>
<div>            print(btn9_label)</div>
<div>        }</div>
<div>        slice1[8] = 9</div>
<div>        //fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1 {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                } // else {</div>
<div>                //  score_check[0] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].B == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[1] = "fail"</div>
<div>                // }</div>
<div>                if slice2[i].C == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                } //else {</div>
<div>                //  score_check[2] = "fail"</div>
<div>                // }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "You Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "You Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // start of check for system win</div>
<div>        store_rand_val := myRand(slice1)</div>
<div>        //fmt.Println("Randomly selected slice value : ", myRand(slice1))</div>
<div>        // I am using using 420 to avoid conflict</div>
<div>        slice1[store_rand_val] = 420</div>
<div>        slice1_sys[store_rand_val] = store_rand_val + 1</div>
<div>        // start of system icon change</div>
<div>        if (store_rand_val + 1) == 1 {</div>
<div>            icon1.File = "C:/assets/robot.png"</div>
<div>            icon1.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 2 {</div>
<div>            icon2.File = "C:/assets/robot.png"</div>
<div>            icon2.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 3 {</div>
<div>            icon3.File = "C:/assets/robot.png"</div>
<div>            icon3.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 4 {</div>
<div>            icon4.File = "C:/assets/robot.png"</div>
<div>            icon4.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 5 {</div>
<div>            icon5.File = "C:/assets/robot.png"</div>
<div>            icon5.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 6 {</div>
<div>            icon6.File = "C:/assets/robot.png"</div>
<div>            icon6.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 7 {</div>
<div>            icon7.File = "C:/assets/robot.png"</div>
<div>            icon7.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 8 {</div>
<div>            icon8.File = "C:/assets/robot.png"</div>
<div>            icon8.Refresh()</div>
<div>        } else if (store_rand_val + 1) == 9 {</div>
<div>            icon9.File = "C:/assets/robot.png"</div>
<div>            icon9.Refresh()</div>
<div>        }</div>
<div>        //end of system icon change</div>
<div>        fmt.Println(slice1_sys)</div>
<div>        fmt.Println(slice1)</div>
<div>        for i := 0; i &lt; 8; i++ {</div>
<div>            score_check := [3]string{"", "", ""}</div>
<div>            for _, q := range slice1_sys {</div>
<div>                if slice2[i].A == q {</div>
<div>                    // fmt.Println("Success")</div>
<div>                    score_check[0] = "success"</div>
<div>                }</div>
<div>                if slice2[i].B == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[1] = "success"</div>
<div>                }</div>
<div>                if slice2[i].C == q {</div>
<div>                    //fmt.Println("Success")</div>
<div>                    score_check[2] = "success"</div>
<div>                }</div>
<div>                // fmt.Println(p, q)</div>
<div>            }</div>
<div>            if score_check[0] != "" &amp;&amp; score_check[1] != "" &amp;&amp; score_check[2] != "" {</div>
<div>                fmt.Println(score_check)</div>
<div>                title_result.Text = "System Won!"</div>
<div>                title_result.Refresh()</div>
<div>                label.Text = "System Won!"</div>
<div>                dlg.Show()</div>
<div>            }</div>
<div>        }</div>
<div>        // end of check for system win</div>
<div>    })</div>
<div>    btn9.Move(fyne.NewPos(250, 250))</div>
<div>    btn9.Resize(fyne.NewSize(100, 100))</div>
<div>    ///////////////////////////</div>
<div>    line := canvas.NewLine(color.RGBA{R: 255, G: 0, B: 0, A: 255})</div>
<div>    line.Position1 = fyne.NewPos(50, 150)</div>
<div>    line.Position2 = fyne.NewPos(350, 150)</div>
<div>    line.StrokeWidth = 5</div>
<div>    // setup data on screen</div>
<div>    line2 := canvas.NewLine(color.RGBA{R: 255, G: 0, B: 0, A: 255})</div>
<div>    line2.Position1 = fyne.NewPos(150, 50)</div>
<div>    line2.Position2 = fyne.NewPos(150, 350)</div>
<div>    line2.StrokeWidth = 5</div>
<div>    // setup data on screen</div>
<div>    line3 := canvas.NewLine(color.RGBA{R: 255, G: 0, B: 0, A: 255})</div>
<div>    line3.Position1 = fyne.NewPos(250, 50)</div>
<div>    line3.Position2 = fyne.NewPos(250, 350)</div>
<div>    line3.StrokeWidth = 5</div>
<div>    line4 := canvas.NewLine(color.RGBA{R: 255, G: 0, B: 0, A: 255})</div>
<div>    line4.Position1 = fyne.NewPos(50, 250)</div>
<div>    line4.Position2 = fyne.NewPos(350, 250)</div>
<div>    line4.StrokeWidth = 5</div>
<div>    // setup data on screen</div>
<div>    c := container.NewWithoutLayout(</div>
<div>        title_result,</div>
<div>        line, line2, line3, line4,</div>
<div>        btn1, icon1, btn2, icon2, btn3, icon3,</div>
<div>        btn4, icon4, btn5, icon5, btn6, icon6,</div>
<div>        btn7, icon7, btn8, icon8, btn9, icon9,</div>
<div>    )</div>
<div>    w.SetContent(c)</div>
<div>    w.ShowAndRun()</div>
<div>}</div>
<div>/// End of code :)</div>
<div>// You can download code from link in description.</div>
</div>
</div>
<div>
Tony BB
 

TonyBB is a Coach , marketer, hypnotist and a founder of RSKVF Production who specializes in providing simple, affordable, and easy to use solutions for Life.

Click Here to Leave a Comment Below 0 comments

Leave a Reply: