Skip to content

Commit 3b601af

Browse files
committed
With sounds
Sounds
1 parent 9061c76 commit 3b601af

File tree

3 files changed

+315
-1
lines changed

3 files changed

+315
-1
lines changed

index.html

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
<!doctype html>
2+
<html>
3+
<head>
4+
<link rel="stylesheet" href="http://www-scf.usc.edu/~slodha/css12/bootstrap.min.css">
5+
<link rel="stylesheet" href="http://www-scf.usc.edu/~slodha/css12/bootstrap.css">
6+
<link rel="stylesheet" href="http://www-scf.usc.edu/~slodha/css12/customCSS.css">
7+
<script src="http://www-scf.usc.edu/~slodha/css12/jquery.js"></script>
8+
<script src="http://www-scf.usc.edu/~slodha/css12/bootstrap.js"></script>
9+
<script src="http://www-scf.usc.edu/~slodha/css12/angular.js"></script>
10+
<script src="http://www-scf.usc.edu/~slodha/css12/angular.js"></script>
11+
<script src="http://www-scf.usc.edu/~slodha/css12/app.js"></script>
12+
<script src="/socket.io/socket.io.js"></script>
13+
<title>Go Fish</title>
14+
</head>
15+
<body>
16+
<div ng-app="appModule" ng-controller="gameController">
17+
<div class="col-sm-12" ng-init="initialize()">
18+
<h2>Go Fish</h2>
19+
</div>
20+
<div class="col-sm-12">
21+
<div class="col-sm-4"></div>
22+
<div class="col-sm-4"><h2>
23+
{{message}}
24+
</h2>
25+
</div>
26+
<div class="col-sm-4">
27+
<h4 class="pull-right">Welcome! {{player.p_name}}</h4>
28+
</div>
29+
</div>
30+
<br/>
31+
<div class="col-sm-12">
32+
<hr/>
33+
</div>
34+
<div class="col-sm-12" ng-show="showName==1">
35+
<div class="form-group col-sm-6">
36+
<div class="col-sm-8">
37+
<input type="text" class="form-control" placeholder="Enter Your Name " autocomplete="off" ng-model="name" />
38+
</div>
39+
40+
<div class="col-sm-2">
41+
<button class="btn btn-primary form-control" ng-click="sendName()">Play</button>
42+
</div>
43+
</div>
44+
</div>
45+
46+
<div class="col-sm-12" ng-show="showName==0">
47+
<div class="form-group col-sm-4">
48+
<label for="askFrom" class="control-label">Who do you pick?</label>
49+
<select class="form-control" ng-model="askedPlayerId">
50+
<option ng-repeat="loopPlayer in players" value="{{loopPlayer.p_id}}" ng-hide="loopPlayer.p_id==player.p_id">{{loopPlayer.p_name}}</option>
51+
</select>
52+
</div>
53+
<div class="form-group col-sm-4">
54+
<label for="askNumber" class="control-label">Which Card Rank?</label>
55+
<select class="form-control" ng-model="number">
56+
<option >Select Card</option>
57+
<option value="A" ng-show="player.stackCount[1]!=0">Ace</option>
58+
<option value="2" ng-show="player.stackCount[2]!=0">2</option>
59+
<option value="3" ng-show="player.stackCount[3]!=0">3</option>
60+
<option value="4" ng-show="player.stackCount[4]!=0">4</option>
61+
<option value="5" ng-show="player.stackCount[5]!=0">5</option>
62+
<option value="6" ng-show="player.stackCount[6]!=0">6</option>
63+
<option value="7" ng-show="player.stackCount[7]!=0">7</option>
64+
<option value="8" ng-show="player.stackCount[8]!=0">8</option>
65+
<option value="9" ng-show="player.stackCount[9]!=0">9</option>
66+
<option value="10" ng-show="player.stackCount[10]!=0">10</option>
67+
<option value="J" ng-show="player.stackCount[11]!=0">Jack</option>
68+
<option value="Q" ng-show="player.stackCount[12]!=0">Queen</option>
69+
<option value="K" ng-show="player.stackCount[13]!=0">King</option>
70+
</select>
71+
</div>
72+
<div class="form-group col-sm-4">
73+
<label for="" class="control-label">Go, Test Your Luck!</label>
74+
<button class="btn btn-primary form-control" ng-disabled="!turn" ng-click="ask()">Ask For Cards</button>
75+
</div>
76+
</div>
77+
<div class="col-xs-12">
78+
<div ng-repeat="card in player.p_cards" class="col-xs-1">
79+
<img ng-click="selectCard(card.name)" src="http://www-scf.usc.edu/~slodha/css12/cards/{{card.name}}.png" style="cursor: pointer;">
80+
<audio id="{{card.name}}" hidden="true" controls>
81+
<source type="audio/mpeg">
82+
</audio>
83+
</div>
84+
</div>
85+
<div class="col-sm-12">
86+
<hr/>
87+
</div>
88+
<div class="col-sm-12">
89+
<div ng-repeat="player in players" class="col-sm-3">
90+
<label>{{player.p_name}}: {{player.numberOfStacks}}</label>
91+
92+
</div>
93+
</div>
94+
</div>
95+
</body>
96+
</html>

index.js

+216
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
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+
});

js/app.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ app.controller('gameController',function($scope){
1717
else {
1818
$scope.number = imgName.charAt(0);
1919
}
20-
20+
var myAudio = document.getElementById(imgName)
21+
myAudio.src = "http://www-scf.usc.edu/~slodha/css12/voices/"+imgName+".mp3"
22+
myAudio.play();
2123
$scope.$apply($scope.number);
2224
}
2325

0 commit comments

Comments
 (0)