Skip to content

Commit

Permalink
Moved game processing to windows form
Browse files Browse the repository at this point in the history
  • Loading branch information
GaProgMan committed Feb 8, 2014
1 parent 4c1c981 commit 2064cac
Show file tree
Hide file tree
Showing 23 changed files with 500 additions and 112 deletions.
Binary file added RockPaperScissors.v12.suo
Binary file not shown.
112 changes: 112 additions & 0 deletions RockPaperScissors/GameForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

107 changes: 107 additions & 0 deletions RockPaperScissors/GameForm.cs
@@ -0,0 +1,107 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace RockPaperScissors
{
public partial class GameForm : Form
{
private Round.moves userMove;
private Round.moves cpuMove;
private Round currentRound;
public List<Round> gameData;

public GameForm()
{
InitializeComponent();

// Set up drop down list with all values from the Round.moves
// enumeration, and default to the 0th item
drpAvailableMoves.Items.Clear();
foreach (string moveName in Enum.GetNames(typeof(Round.moves)))
{
drpAvailableMoves.Items.Add(moveName);
}
drpAvailableMoves.SelectedIndex = 0;

// Ensure that we have a new list to store all game data in
gameData = new List<Round>();
}

private void btnUseMove_Click(object sender, EventArgs e)
{
// Parse the user input to a Round.moves enum value
userMove = parseUserInput(drpAvailableMoves.SelectedItem.ToString());

// Generate the data for this round
cpuMove = generateGuess();
currentRound = new Round(userMove, cpuMove);

// Write the result of this round to the log
rtbResults.AppendText(currentRound.ToString());

// Add the data from this round to the list of previous
// rounds
gameData.Add(currentRound);
}

/// <summary>
/// Used to parse the user input move string to a Round.moves enum
/// </summary>
/// <param name="inUserInput">The user onput move string</param>
/// <returns>A Round.moves enum</returns>
private Round.moves parseUserInput(string inUserInput)
{
switch (inUserInput)
{
case "Rock":
return Round.moves.Rock;
case "Paper":
return Round.moves.Paper;
case "Scissors":
return Round.moves.Scissors;
case "Lizard":
return Round.moves.Lizard;
case "Spock":
return Round.moves.Spock;
default:
return Round.moves.q;
}
}

/// <summary>
/// Weak random generation of cpu guess, using the number
/// of seconds in the current minute as the seed for a
/// randomly generated number. This number is then used
/// as a basis for whether the cpu guess is Rock (1),
/// Paper (2) or Scissors (3)
/// </summary>
/// <returns>Cpu guess (Rock, Paper or Scissors)</returns>
private Round.moves generateGuess()
{
// Extremely bad algorithm for generating the CPU guess
Random randChoice = new Random(System.DateTime.Now.Second);
switch (randChoice.Next(1, 5))
{
case 1:
return Round.moves.Rock;
case 2:
return Round.moves.Paper;
case 3:
return Round.moves.Scissors;
case 4:
return Round.moves.Lizard;
case 5:
return Round.moves.Spock;
default:
throw new Exception("Random value generated was not as expected");
}
}
}
}
120 changes: 120 additions & 0 deletions RockPaperScissors/GameForm.resx
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

0 comments on commit 2064cac

Please sign in to comment.