1
+ var app = require ( 'express' ) ( ) ;
2
+ var http = require ( 'http' ) . Server ( app ) ;
3
+ var io = require ( 'socket.io' ) ( http ) ;
4
+ var cardid = 1 ;
5
+ var num_players = 0 ;
6
+ var Cards ;
7
+ var NUM_DEAL = 5 ;
8
+ var PlayersInfo = new Array ( ) ;
9
+ var Players = new Array ( ) ;
10
+
11
+ var PlayerInfo = function ( id , name ) {
12
+ var self = this ;
13
+ self . p_name = name ;
14
+ self . p_id = id ;
15
+ return self ;
16
+ }
17
+
18
+ var Player = function ( id , name , cards )
19
+ {
20
+ var self = this ;
21
+ self . p_id = id ;
22
+ self . p_name = name ;
23
+ self . p_cards = cards ;
24
+ return self ;
25
+ }
26
+
27
+ var Card = function ( rank , suit )
28
+ {
29
+ var self = this ;
30
+ self . id = cardid ++ ;
31
+ self . rank = rank ;
32
+ self . suit = suit ;
33
+ self . name = self . rank + self . suit ;
34
+ return self ;
35
+ }
36
+ var removePlayer = function ( player )
37
+ {
38
+ for ( i = 0 ; i < Players . length ; i ++ )
39
+ {
40
+ if ( Players [ i ] . p_id == player . p_id )
41
+ {
42
+ Players . splice ( i , 1 ) ;
43
+ return ;
44
+ }
45
+ }
46
+ }
47
+
48
+ var removeCards = function ( p_id , num ) {
49
+ var askedPlayer ;
50
+ for ( i = 0 ; i < Players . length ; i ++ ) {
51
+ if ( Players [ i ] . p_id == p_id ) {
52
+ askedPlayer = Players [ i ] ;
53
+ for ( j = 0 ; j < askedPlayer . p_cards . length ; j ++ ) {
54
+ if ( askedPlayer . p_cards [ j ] . rank == num ) {
55
+ askedPlayer . p_cards . splice ( j , 1 ) ;
56
+ }
57
+ }
58
+ }
59
+ }
60
+ return askedPlayer ;
61
+ }
62
+
63
+ function stackShuffle ( ) {
64
+
65
+ var i , j , k ;
66
+ var temp ;
67
+ // Shuffle the stack 'n' times.
68
+
69
+ for ( j = 0 ; j < Cards . length ; j ++ ) {
70
+ k = Math . floor ( Math . random ( ) * Cards . length ) ;
71
+ temp = Cards [ j ] ;
72
+ Cards [ j ] = Cards [ k ] ;
73
+ Cards [ k ] = temp ;
74
+ }
75
+ }
76
+
77
+ function stackDeal ( ) {
78
+ if ( Cards . length > 0 )
79
+ return Cards . shift ( ) ;
80
+
81
+ else
82
+ return null ;
83
+ }
84
+
85
+
86
+
87
+ var findCards = function ( num , p_id ) {
88
+ var resultAsk = new Array ( ) ;
89
+ for ( i = 0 ; i < Players . length ; i ++ ) {
90
+ if ( Players [ i ] . p_id == p_id ) {
91
+ for ( j = 0 ; j < Players [ i ] . p_cards . length ; j ++ ) {
92
+ if ( Players [ i ] . p_cards [ j ] . rank == num ) {
93
+ resultAsk . push ( Players [ i ] . p_cards [ j ] ) ;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ return resultAsk ;
99
+ }
100
+
101
+
102
+ var createDeck = function ( ) {
103
+
104
+ var n = 1 ;
105
+ var ranks = new Array ( "A" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" ,
106
+ "10" , "J" , "Q" , "K" ) ;
107
+ var suits = new Array ( "C" , "D" , "H" , "S" ) ;
108
+ var i , j , k ;
109
+ var m ;
110
+ l = 0 ;
111
+ m = ranks . length * suits . length ;
112
+
113
+ // Set array of cards.
114
+
115
+ Cards = new Array ( m ) ;
116
+
117
+ // Fill the array with 'n' packs of cards.
118
+
119
+ // for (i = 0; i < n; i++)
120
+ for ( j = 0 ; j < suits . length ; j ++ )
121
+ for ( k = 0 ; k < ranks . length ; k ++ )
122
+ Cards [ l ++ ] =
123
+ new Card ( ranks [ k ] , suits [ j ] ) ;
124
+ }
125
+
126
+ app . get ( '/' , function ( req , res ) {
127
+ res . sendFile ( 'index.html' , { root : __dirname } ) ;
128
+ } ) ;
129
+
130
+ io . on ( 'connection' , function ( socket ) {
131
+ num_players ++ ;
132
+ var newPlayer ;
133
+ if ( num_players == 1 )
134
+ {
135
+ createDeck ( ) ;
136
+ }
137
+
138
+
139
+ socket . on ( 'requestCards' , function ( name ) {
140
+ stackShuffle ( ) ;
141
+ var player_cards = new Array ( NUM_DEAL ) ;
142
+
143
+ for ( i = 0 ; i < NUM_DEAL ; i ++ ) {
144
+ var cardReturned = stackDeal ( ) ;
145
+ console . log ( "Card Removed" + cardReturned . name ) ;
146
+ player_cards [ i ] = cardReturned ;
147
+ }
148
+ for ( i = 0 ; i < NUM_DEAL ; i ++ )
149
+ {
150
+ console . log ( player_cards [ i ] . name ) ;
151
+ }
152
+ newPlayer = new Player ( socket . id , name , player_cards ) ;
153
+ Players . push ( newPlayer ) ;
154
+ socket . emit ( 'sendCards' , newPlayer ) ;
155
+
156
+ } ) ;
157
+
158
+
159
+
160
+
161
+ socket . on ( 'myName' , function ( name ) {
162
+ console . log ( 'new player with name: ' + name ) ;
163
+ var newPlayerInfo = new PlayerInfo ( socket . id , name ) ;
164
+ PlayersInfo . push ( newPlayerInfo ) ;
165
+ io . sockets . emit ( 'playersInfoObject' , PlayersInfo ) ;
166
+ } ) ;
167
+
168
+
169
+ socket . on ( 'ask' , function ( number , p_id ) {
170
+
171
+ console . log ( "Number:" + number + "+Pid :" + p_id ) ;
172
+ var askedCards = findCards ( number , p_id ) ;
173
+ console . log ( askedCards . length ) ;
174
+
175
+
176
+ for ( var i = 0 ; i < askedCards . length ; i ++ )
177
+ {
178
+ newPlayer . p_cards . push ( askedCards [ i ] ) ;
179
+ }
180
+
181
+
182
+
183
+ if ( askedCards . length > 0 )
184
+ {
185
+ var askedPlayer = removeCards ( p_id , askedCards [ 0 ] . rank ) ;
186
+ removePlayer ( askedPlayer ) ;
187
+ console . log ( "Asked Player Removed:" + askedPlayer . p_id ) ;
188
+ Players . push ( askedPlayer ) ;
189
+ if ( io . sockets . connected [ p_id ] ) {
190
+ io . sockets . connected [ p_id ] . emit ( 'sendCards' , askedPlayer ) ;
191
+
192
+ console . log ( askedPlayer . p_cards . length ) ;
193
+ }
194
+
195
+
196
+ }
197
+
198
+
199
+
200
+ removePlayer ( newPlayer ) ;
201
+ console . log ( "Player Removed:" + newPlayer . p_id ) ;
202
+ Players . push ( newPlayer ) ;
203
+ console . log ( "Player Pushed:" + newPlayer . p_id ) ;
204
+ socket . emit ( "resultAsk" , newPlayer ) ;
205
+
206
+
207
+
208
+ } ) ;
209
+
210
+
211
+
212
+ } ) ;
213
+
214
+ http . listen ( 3000 , function ( ) {
215
+ console . log ( 'listening on *:3000' ) ;
216
+ } ) ;
0 commit comments