示例#1
0
        public void replacePlayer(int index, UserVoter user)
        {
            playersTypeOrder[index] = "replaced";
            replacingAgents.Add(new FirstModel(this, user.CurrPriority, user.userID));
            replaceTurn++;
            string disconnect = user.userID + "," + roundNumber;

            playersDisconnected.Add(disconnect);
        }
示例#2
0
        public string createNumOfVotesString(UserVoter player)
        {
            string        numOfvotesString = "";
            List <string> priority         = priorities.ElementAt(player.inGameIndex);
            List <string> candNames        = candidatesNames;

            for (int i = 0; i < votedBy.Count; i++)
            {
                numOfvotesString = numOfvotesString + "#" + votedBy[candNames.IndexOf(priority[i])].Count;
            }
            return(numOfvotesString);
        }
示例#3
0
        public Boolean addPlayerID(UserVoter playerID)
        {
            if (status != "init")
            {
                return(false);
            }
            playersID.Add(playerID.connectionID);
            int indexofP = getPlayerIndex(playerID.connectionID);

            playerID.JoinGame(this, indexofP, priorities[indexofP]);
            if (playersID.Count == numOfHumanPlayers)
            {
                status = "ready";
                updateLog();
            }
            return(true);
        }
示例#4
0
        public int CompareTo(object obj)
        {
            if (obj == null)
            {
                return(1);
            }

            UserVoter otherPlayer = obj as UserVoter;

            if (otherPlayer != null)
            {
                return(String.Compare(this.connectionID, otherPlayer.connectionID, StringComparison.Ordinal));
            }
            else
            {
                throw new ArgumentException("Object is not a Player");
            }
        }
示例#5
0
        public string createCandNamesString(UserVoter userPlayer)
        {
            List <string> priority = priorities.ElementAt(userPlayer.inGameIndex);

            return(priority.Aggregate("", (current, t) => current + "#" + t));
        }
示例#6
0
        public void updateLog()
        {
            if (logUpdated == false)
            {
                //priorities
                string priorityString = "";
                //titles
                string titles   = "time,player,vote,duration,current winner,";
                int    agentidx = -1;
                for (int i = 0; i < this.numOfCandidates; i++)
                {
                    titles += "votes for candidate " + (i + 1) + ",";
                }

                for (int i = 0; i < getNumOfPlayers(); i++)
                {
                    if (playersTypeOrder[i] != "human")
                    {
                        agentidx++;
                    }
                    if (playersTypeOrder[i] == "human" || Program.LogAgents)
                    {
                        UserVoter tmp = null;
                        if (playersTypeOrder[i] != "human")
                        {
                            priorityString = "comp_" + agents[agentidx].agentsIDinGame;
                        }

                        else
                        {
                            tmp            = Program.ConnIDtoUser[playersID[gethumanNumber(i)]];
                            priorityString = tmp.userID.ToString();
                        }

                        for (int k = 0; k < priorities[i].Count; k++)
                        {
                            priorityString = priorityString + "," + (candidatesNames.IndexOf(priorities[i][k]) + 1);
                        }

                        if (tmp != null)
                        {
                            priorityString = tmp.mTurkID.Length > 0 ? priorityString + "," + tmp.mTurkID : priorityString + "," + tmp.connectionID;
                        }
                        writeToFile.Add(priorityString);
                    }
                    if (playersTypeOrder[i] == "human")
                    {
                        titles += "points player" +
                                  Program.ConnIDtoUser[playersID[gethumanNumber(i)]].userID + ",";
                    }
                    else
                    {
                        titles += "points comp_" + agents[agentidx].agentsIDinGame + ",";
                    }
                }
                titles = titles.Remove(titles.Length - 1);

                writeToFile.Add(titles);
                logUpdated  = true;
                timeStarted = DateTime.Now;
            }
        }