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
|
enum {
Twater,
Tship,
Thit,
Tmiss,
NTILES,
Waiting0 = 0,
Outlaying,
Waiting1,
Playing,
Boardmargin = 50,
TW = 16,
TH = TW,
MAPW = 17,
MAPH = MAPW,
SCRW = Boardmargin+MAPW*TW+Boardmargin,
SCRH = Boardmargin+MAPH*TH+TH+MAPH*TH+Boardmargin,
KB = 1024,
};
typedef struct Input Input;
typedef struct Board Board;
typedef struct Ship Ship;
typedef struct Player Player;
typedef struct Playerq Playerq;
typedef struct Chanpipe Chanpipe;
struct Input
{
Mousectl *mc;
Keyboardctl *kc;
};
struct Board
{
RFrame;
char map[17][17];
Rectangle bbox;
};
struct Ship
{
RFrame;
int ncells;
int sunk;
};
struct Player
{
int fd;
int sfd;
Player *o; /* opponent */
};
struct Playerq
{
QLock;
Player **players;
ulong cap;
ulong nplayers;
};
struct Chanpipe
{
Channel *c;
int fd;
};
|