CC Dispatch [Issue 118] Apogee, Perigee, and Whac-a-Gee

All issues of the newsletter.

Moderator: Community Team

Locked
User avatar
Dukasaur
Community Team
Community Team
Posts: 28213
Joined: Sat Nov 20, 2010 4:49 pm
Location: Beautiful Niagara

CC Dispatch [Issue 118] Apogee, Perigee, and Whac-a-Gee

Post by Dukasaur »

Image

Welcome comrades to the 118th edition of the CC Dispatch!

The big story of the last two weeks has, of course, been the annual ritual of Whac-a-Mod. I can only speak for myself, but this is the first year that I've actually enjoyed it. In the past, we only had a choice of team games (which I don't really like) and speed games (which I don't really like.) This year, for the first time, the field was wide open to choose from the full panoply of game types, including 1v1 casual games, polymorphs, standards, terminators, and assassins.

The last week, for me, has been absolutely wild, as I started more than 70 games, most of them polymorphs. When combined with other games in progress, my total game load went up over 100 games for the first time since the summer of 2011, when I was laid off and had all the time in the world to play. So it was both exhausting and exhilarating to play that incredible, almost never-ending stream of turns. I almost never had an empty board in front of me. Still don't of course, since most of those games have not ended.

All that is nothing compared to the amazing feats of players like [player]Keefie[/player], who started 133 games, [player]IcePack[/player] who set himself a goal of 250 and inexorably worked towards it, finally hitting his mark on the last day, and the absolutely staggering achievement of [player]chemefreak[/player] who started an amazing 280 games!

Altogether 1766 Whac-a-Mod games were played, more than double the number that has been played in previous years (typically in the past there were between 600 and 800 games.) Half of those are still ongoing, so keep track of who is winning their games on the Whac-a-Mod scoreboard. No more games can be created, but we have until June 30th to finish existing games.

Anyway, I'm absolutely exhausted, but also totally exhilarated, by the wild ride of the last few days!

Now, on to the newsletter.

We have fewer sections than usual, but what we do have is all top notch! I would like to give special thanks to [player]DaveH[/player] and his Tournament team: [player]McShanester29[/player], [player]iAmCaffeine[/player], and the newest addition to their team, [player]jdean1[/player]. This is the most reliable of our news teams, and once again they have put together an absolutely astounding War Games section!

In the Mess Hall, we have two articles: one is the 9th installment of [player]iAmCaffeine[/player]'s Dispatch Trivia series, and the other is a special submission from [player]Stealth99[/player]. Stealth is not a member of the Dispatch staff, but he had something that he very much wanted to share with our readers.

Our Interrogation, as promised, features TeeGee. In keeping with the long-standing tradition of naming Dispatch issues after a pun on the name of the Interrogation victim, I have named this one Apogee, Perigee, and Whac-a-Gee. TeeGee played 28 games in this year's Whac-a-Mod, and seems to have gotten Whacked quite a bit. As for the Apogee and Perigee? No connection whatsoever, except that I love rhyming games.
:lol:

The monthly Challenge for June is entitled Mandela, a Retrospective and features games on the South Africa map with (as always) a tough combination of settings.

That's all until next time. Enjoy the fruits of our labour!


Use our convenient navigation buttons to get to your favourite section.
Image
ImageImage Image
Image
User avatar
DaveH
Posts: 1595
Joined: Sun Dec 06, 2009 9:12 am
Gender: Male
Location: Torquay, Devon

War Games

Post by DaveH »

Image

Hello friends, and welcome to your favourite part of the Newsletter, "War Games", where you can find information about CC Tournaments, and other stuff in the Tournament scene!

In this bumper edition of War Games we continue to deliver our news staples with [player]mcshanester29[/player]'s Meet the Tournament Winners which features [player]Gilligan[/player]. We have [player]iAmCaffeine[/player]'s May summary of Tournament Winners, my update of TPA happenings in TPA Wrap, and I have also updated last week's Tournament Tips with [player]MrBenn[/player]'s xml code for transferring tournament game data directly into Excel which is a fantastic tool for TO's!

I would also like to extend our warmest welcome to [player]jdean1[/player] who will be picking up the Join This? or Not! review of tournaments on offer. Welcome Dean =D> =D> =D>

Good Reading and Good Luck!

[player]DaveH[/player]
Tournament Executive

Meet the Tournament Winners: Gilligan by mcshanester29
show

Tournament Winners Update: May '14 by iAmCaffeine
show

TPA Wrap by DaveH
show

Join This? Or Not! by jdean1
show

Tournament Tips #54 by DaveH
[spoiler=Downloading tournament game data into Excel.]Following on from the "Tips" article in the previous newsletter, [player]MrBenn[/player] revamped his xml code in order to download a summary of all the games in a single tournament. As TO's will realise, this opens up a whole new world of possible scoring systems and could be used to cut update times for their tournaments. Firstly, the code:

Code: Select all

    Sub Get_cc_tournament()

    Dim tourney As String
    Dim APIpath As String
    Dim xmlDoc As MSXML2.DOMDocument
    Dim xNode As MSXML2.IXMLDOMNode

    Dim gData()
    Dim pData()

    Dim pRange As Range
    Dim pStats As Range

    Dim headers(1 To 2)
    headers(1) = Array("Game No", "Tournament Label", "Map", "Players", "Game Type", "Round Limit", "Status")
    headers(2) = Array("Player Name", "Elim Order", "Kills", "Points", "Result", "Round")

    'Cells(nextRow, UBound(gData) + 1).Resize(UBound(pData, 1) - LBound(pData, 1) + 1, UBound(pData, 2) - LBound(pData, 2) + 1).Value = pData
    Col = UBound(headers(1)) - LBound(headers(1)) + 1
    Cells(1, 1).Resize(1, Col).Value = headers(1)
    Cells(1, Col + 1).Resize(1, UBound(headers(2)) - LBound(headers(2)) + 1).Value = headers(2)
    Col = Col + UBound(headers(2)) - LBound(headers(2)) + 1

    CurPage = 1
    nextRow = 2
        'Get tournament name from inputbox
        Deftourney = ActiveSheet.Name
        'Deftourney = "7 Man Madness!"
        tourney = InputBox("Please enter a Conquer Club Tournament Name:", , Deftourney)
        If tourney = "" Then Exit Sub
       
    Do
        APIpath = "http://www.conquerclub.com/api.php?mode=gamelist&to=" & tourney _
                    & "&names=Y&events=Y"
        If CurPage > 1 Then APIpath = APIpath & "&page=" & CurPage
       
        Set xmlDoc = New MSXML2.DOMDocument
       
        With xmlDoc
            'Load the xml from CC API
            .async = False
            .validateOnParse = False
            .Load (APIpath)
             
            'Get number of pages
            Set xNode = .FirstChild.selectSingleNode("page")
            With xNode
                l = InStr(.Text, " ")
                CurPage = CInt(Left(.Text, l))
                l = InStrRev(.Text, " ")
                MaxPage = CInt(Mid(.Text, l))
            End With
           
            'Get number of games in xml
            Set xNode = .FirstChild.selectSingleNode("games")
            MaxGames = xNode.Attributes.getNamedItem("total").Text
            FileGames = xNode.childNodes.Length
           
            For g = 0 To (FileGames - 1) Step 1
               
                With xNode.childNodes(g)
       
                    ReDim gData(1 To 7)
                    gData(1) = .selectSingleNode("game_number").Text
                    gData(1) = "=HYPERLINK(""http://www.conquerclub.com/game.php?game=" & _
                                        gData(1) & """,""" & gData(1) & """)"
                    gData(2) = .selectSingleNode("tournament").Text
                    gData(3) = .selectSingleNode("map").Text
                    gData(4) = .selectSingleNode("players").childNodes.Length
                    gData(5) = .selectSingleNode("game_type").Text
                    gData(6) = .selectSingleNode("round_limit").Text
                    gData(7) = .selectSingleNode("game_state").Text
                   
                   
                    Select Case gData(5) 'Game Type
                        Case "S"
                            gData(5) = "Standard"
                        Case "C"
                            gData(5) = "Terminator"
                        Case "A"
                            gData(5) = "Assassin"
                        Case "P"
                            gData(5) = "Polymorphic"
                        Case "D"
                            gData(5) = "Doubles"
                        Case "T"
                            gData(5) = "Triples"
                        Case "Q"
                            gData(5) = "Quads"
                        Case Else
                            'Unknown Game Type
                    End Select
                   
                    Select Case gData(7) 'game state (W)aiting, (A)ctive or (F)inished
                        Case "W"
                            gData(7) = "Waiting"
                        Case "A"
                            gData(7) = "Active"
                        Case "F"
                            gData(7) = "Finished"
                        Case Else
                            'Unknown Game State
                    End Select
                   
                   
                    'Range("A1:A" & UBound(GData)) = WorksheetFunction.Transpose(GData)
                    Range(Cells(nextRow, 1), Cells(nextRow, UBound(gData))) = gData
                    'nextRow = nextRow + 1
                       
                    ReDim pData(1 To gData(4), 0 To 5)
                    '(playerNo, (0=name, 1=Elim Order, 2=Kills, 3=Points, 4=Result, 5=Round) )
           
                    For p = 1 To gData(4)
                        With .selectSingleNode("players").childNodes(p - 1)
                            pData(p, 0) = .Text
                            pData(p, 4) = .Attributes.getNamedItem("state").nodeValue
                        End With 'Players
                        pData(p, 5) = .selectSingleNode("round").Text
                    Next p
                   
                    ko = 1
                    For e = 1 To .selectSingleNode("events").childNodes.Length
                        With .selectSingleNode("events").childNodes(e - 1)
                            'GameXML.childNodes(19).childNodes(e - 1)
                           
                            If Right(.Text, 7) = " points" Then
                                l = InStr(.Text, " ")
                                p = CInt(Left(.Text, l))
                                pData(p, 3) = pData(p, 3) + _
                                                 CInt(Replace(Replace(Replace( _
                                                      Mid(.Text, l, Len(.Text)), _
                                                      "loses", "-"), "gains", "+"), "points", ""))
                            ElseIf Right(.Text, 14) = " from the game" Then
                                l = InStr(.Text, " ")
                                p = CInt(Left(.Text, l))
                                If Not p = 0 Then 'not eliminated by neutral
                                    pData(p, 2) = pData(p, 2) + 1
                                End If
                                t = .Text
                                t = Mid(.Text, l, Len(.Text))
                                pData(CInt(Replace(Replace( _
                                            Mid(.Text, l, Len(.Text)), _
                                            "eliminated", ""), "from the game", "")) _
                                            , 1) = ko     ' pData(p,4) = Kill Order
                                ko = ko + 1
                               
                            End If
                        End With
                    Next e
                               
                    Cells(nextRow, UBound(gData) + 1).Resize(UBound(pData, 1) - LBound(pData, 1) + 1, UBound(pData, 2) - LBound(pData, 2) + 1).Value = pData
                    nextRow = nextRow + gData(4)
                   
                    With Rows(nextRow).EntireRow.Borders(xlEdgeTop)
                        .LineStyle = xlContinuous
                        .Weight = xlMedium
                        .ColorIndex = xlAutomatic
                    End With
                   
                End With 'Game(g) 'xNode.childNodes(g)
                   
            Next g
           
        End With 'xmlDoc

    CurPage = CurPage + 1
    Loop While CurPage <= MaxPage

    '#### All Game Data has now been imported (will error if too many rows for spreadsheet)
    Cells(1, Col + 1).Value = CStr(MaxGames) & " Games"

    Set pRange = Range(Cells(2, 8), Cells(nextRow - 1, 8))
    uPlayers = UniqueList(pRange)

    StatCol = 16   'Col P
    Set pStats = Range("P2:P" & CStr(UBound(uPlayers) + 2))

    Cells(1, StatCol).Value = "Player Name"
    pStats = WorksheetFunction.Transpose(uPlayers)

    Set pStats = pRange.Offset(0, 1)

    ' NEED TO ADD IN SOME STATS FORMULAE
    ' ALSO NEED TO CALCULATE WHICH ROUND AN ELIMINATION TOOK PLACE

    End Sub

    Function UniqueList(Optional ListRange As Range)

        If ListRange Is Nothing Then Set ListRange = Selection

        Dim List As Variant
        List = ListRange.Value
       
        With CreateObject("scripting.dictionary")
            For Each element In List
                If Not element = Empty Then c00 = .Item(element)
            Next
            UniqueList = .keys
        End With
           
    End Function
When you run this macro from an Excel page it asks for the tournament name must be entered exactly as on the tournament list. You then get the following summary of the tournament.
[bigimg]http://i1330.photobucket.com/albums/w565/DaveHomer/Amazing_zps2aa36255.jpg[/bigimg]You have game number that is linked directly to the game; Tournament Name; Map; Number of Players; Game Type; Round Limit; Game Status; A list of the Players' Names; The Order of Elimination for each Player; Number of Kills for each Player; Points and Result; Final Round Number, with a summary of the total number of games.

From this summary you can link to other pages with macros designed to provide the data that your particular tournament requires - and this is something I will be writing about as soon as I get the opportunity for a large-scale and complex tournament!
Many thanks [player]MrBenn[/player] and Very Well Done! =D> =D> =D>[/spoiler]

Use our convenient navigation buttons to get to your favourite section.
Image
ImageImage Image
Image
User avatar
Dukasaur
Community Team
Community Team
Posts: 28213
Joined: Sat Nov 20, 2010 4:49 pm
Location: Beautiful Niagara

Mess Hall

Post by Dukasaur »

Image

The first thing you will notice is that safariguy5 is no longer with us as the editor of the Mess Hall. I'm doing the section myself for now, but if you think you've got what it takes to fill safari's big shoes, now would be the time to speak up.

We have two items in Mess Hall this time around. The first is a re-run of the 9th installment of Caffeine's Dispatch Trivia Contest. We didn't get very many entries, so we've decided to extend the deadline and publish the questions again.

The second item is rather unusual. It's a very moving human interest piece submitted to us by [player]Stealth99[/player], who has gone through a trying time lately and has a very emotional message of gratitude for his friends on CC. I'll say no more and let the article speak for itself. Thank you Stealth99 for sharing with us!

Dispatch Trivia - Round 9 of 10 by iAmCaffeine
show

Real Friends by Stealth99
show


Use our convenient navigation buttons to get to your favourite section.
Image
ImageImage Image
Image
User avatar
Dukasaur
Community Team
Community Team
Posts: 28213
Joined: Sat Nov 20, 2010 4:49 pm
Location: Beautiful Niagara

Interrogation Room

Post by Dukasaur »

Image

Interrogation of TeeGee
[player]TeeGee[/player] joined Conquer Club on November 11th, 2006. That makes him one of the senior statesmen of the Club. He's been a full-fledged Team CC volunteer since November of 2011, gradually accepting greater and greater levels of responsibility until finally becoming Chief Global moderator last September. That is the highest-ranking volunteer position on the site, responsible only to the admins. We decided it was high time that such an important person was put under the Dispatch microscope.

show


Use our convenient navigation buttons to get to your favourite section.
Image
ImageImage Image
Image
User avatar
Dukasaur
Community Team
Community Team
Posts: 28213
Joined: Sat Nov 20, 2010 4:49 pm
Location: Beautiful Niagara

Re: CC Dispatch [Issue 118] Apogee, Perigee, and Whac-a-Gee

Post by Dukasaur »

Actual publication date June 3rd, 2014 @0557.
“‎Life is a shipwreck, but we must not forget to sing in the lifeboats.”
― Voltaire
User avatar
GioDuce
Posts: 379
Joined: Thu Jul 14, 2011 11:48 am
Gender: Male
Location: Vlaanderen

Re: CC Dispatch [Issue 118] Apogee, Perigee, and Whac-a-Gee

Post by GioDuce »

I lack words on the article that Stealth99 wrote.

=D>
Image
User avatar
Gilligan
Posts: 12478
Joined: Thu May 11, 2006 4:59 pm
Gender: Male
Location: Providence, RI

Re: CC Dispatch [Issue 118] Apogee, Perigee, and Whac-a-Gee

Post by Gilligan »

Another great issue! Speaking of losing bladder control, I had no idea I was in 5th place for TPA3.... :shock:
Image
Locked

Return to “Newsletter Issues”