-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.go
76 lines (57 loc) · 1.25 KB
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package server
import (
"encoding/gob"
"fmt"
"github.com/bdkamenov/Multi_GOtris/core"
"math/rand"
"net"
"os"
"time"
)
// StartServer starts the first player and the server side of
// the server-client service
func StartServer(serverIP, playerName, mode string) {
service := serverIP+":1234"
tcpAddr, err := net.ResolveTCPAddr("tcp", service)
checkError(err)
fmt.Println(tcpAddr)
listener, err := net.ListenTCP("tcp", tcpAddr)
checkError(err)
for {
conn, err := listener.Accept()
if err != nil {
continue
}
fmt.Println("server connection made")
encoder := gob.NewEncoder(conn)
decoder := gob.NewDecoder(conn)
seed := time.Now().Unix()
rand.Seed(seed)
err = encoder.Encode(seed)
checkError(err)
core.Player1 = core.Player{playerName, 0, false}
err = decoder.Decode(&core.Player2)
checkError(err)
go func() {
for {
encoder.Encode(core.Player1)
err = decoder.Decode(&core.Player2)
checkError(err)
if core.Player2.GameOver == true {
println(core.Player2.Name, "lost, you win!")
break
}
}
conn.Close()
os.Exit(0)
}()
// start game here
core.StartGame(mode)
}
}
func checkError(err error) {
if err != nil {
fmt.Println("Fatal error ", err.Error())
os.Exit(1)
}
}