From 7068b4cc22eddcd72607fecb98d4b5ae47300b77 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sat, 7 Jan 2017 23:09:43 +0100 Subject: [PATCH] 2015.02.09 --- .gitignore | 223 +++++++++++++++++++++ SnakeGame.sln | 22 ++ SnakeGame/App.config | 6 + SnakeGame/Form1.Designer.cs | 127 ++++++++++++ SnakeGame/Form1.cs | 62 ++++++ SnakeGame/Form1.resx | 123 ++++++++++++ SnakeGame/Game.cs | 127 ++++++++++++ SnakeGame/GameRenderer.cs | 32 +++ SnakeGame/MenuColorTable.cs | 77 +++++++ SnakeGame/Program.cs | 22 ++ SnakeGame/Properties/AssemblyInfo.cs | 36 ++++ SnakeGame/Properties/Resources.Designer.cs | 71 +++++++ SnakeGame/Properties/Resources.resx | 117 +++++++++++ SnakeGame/Properties/Settings.Designer.cs | 30 +++ SnakeGame/Properties/Settings.settings | 7 + SnakeGame/SnakeGame.csproj | 92 +++++++++ SnakeGame/SquareCoord.cs | 62 ++++++ packages/repositories.config | 4 + 18 files changed, 1240 insertions(+) create mode 100644 .gitignore create mode 100644 SnakeGame.sln create mode 100644 SnakeGame/App.config create mode 100644 SnakeGame/Form1.Designer.cs create mode 100644 SnakeGame/Form1.cs create mode 100644 SnakeGame/Form1.resx create mode 100644 SnakeGame/Game.cs create mode 100644 SnakeGame/GameRenderer.cs create mode 100644 SnakeGame/MenuColorTable.cs create mode 100644 SnakeGame/Program.cs create mode 100644 SnakeGame/Properties/AssemblyInfo.cs create mode 100644 SnakeGame/Properties/Resources.Designer.cs create mode 100644 SnakeGame/Properties/Resources.resx create mode 100644 SnakeGame/Properties/Settings.Designer.cs create mode 100644 SnakeGame/Properties/Settings.settings create mode 100644 SnakeGame/SnakeGame.csproj create mode 100644 SnakeGame/SquareCoord.cs create mode 100644 packages/repositories.config diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..035f367 --- /dev/null +++ b/.gitignore @@ -0,0 +1,223 @@ +################# +## Eclipse +################# + +*.pydevproject +.metadata/ +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath +target/ +.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml +*.pubxml +*.publishproj + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + +############# +## Windows detritus +############# + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store + + +############# +## Python +############# + +*.py[cod] + +# Packages +*.egg +*.egg-info +dist/ +build/ +eggs/ +parts/ +var/ +sdist/ +develop-eggs/ +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg +.metadata/* +TheButtonAutoFlair/out/artifacts/Autoflair/Autoflair.jar +*.iml +*.name +.idea/compiler.xml +*.xml diff --git a/SnakeGame.sln b/SnakeGame.sln new file mode 100644 index 0000000..ab23c09 --- /dev/null +++ b/SnakeGame.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 2013 for Windows Desktop +VisualStudioVersion = 12.0.30723.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SnakeGame", "SnakeGame\SnakeGame.csproj", "{7CB0C0BB-9EDD-48BA-B19C-306C444D37DE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7CB0C0BB-9EDD-48BA-B19C-306C444D37DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7CB0C0BB-9EDD-48BA-B19C-306C444D37DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7CB0C0BB-9EDD-48BA-B19C-306C444D37DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7CB0C0BB-9EDD-48BA-B19C-306C444D37DE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/SnakeGame/App.config b/SnakeGame/App.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/SnakeGame/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/SnakeGame/Form1.Designer.cs b/SnakeGame/Form1.Designer.cs new file mode 100644 index 0000000..8a32683 --- /dev/null +++ b/SnakeGame/Form1.Designer.cs @@ -0,0 +1,127 @@ +namespace SnakeGame +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.gameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.newSingleplayerGameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.newMultiplayerGameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.joinMultiplayerGameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Location = new System.Drawing.Point(12, 41); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(600, 380); + this.panel1.TabIndex = 0; + this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint); + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.gameToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(624, 24); + this.menuStrip1.TabIndex = 1; + this.menuStrip1.Text = "menuStrip1"; + // + // gameToolStripMenuItem + // + this.gameToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.newSingleplayerGameToolStripMenuItem, + this.newMultiplayerGameToolStripMenuItem, + this.joinMultiplayerGameToolStripMenuItem}); + this.gameToolStripMenuItem.Name = "gameToolStripMenuItem"; + this.gameToolStripMenuItem.Size = new System.Drawing.Size(50, 20); + this.gameToolStripMenuItem.Text = "Game"; + // + // newSingleplayerGameToolStripMenuItem + // + this.newSingleplayerGameToolStripMenuItem.BackColor = System.Drawing.Color.Black; + this.newSingleplayerGameToolStripMenuItem.ForeColor = System.Drawing.Color.White; + this.newSingleplayerGameToolStripMenuItem.Name = "newSingleplayerGameToolStripMenuItem"; + this.newSingleplayerGameToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + this.newSingleplayerGameToolStripMenuItem.Text = "New singleplayer game"; + // + // newMultiplayerGameToolStripMenuItem + // + this.newMultiplayerGameToolStripMenuItem.BackColor = System.Drawing.Color.Black; + this.newMultiplayerGameToolStripMenuItem.ForeColor = System.Drawing.Color.White; + this.newMultiplayerGameToolStripMenuItem.Name = "newMultiplayerGameToolStripMenuItem"; + this.newMultiplayerGameToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + this.newMultiplayerGameToolStripMenuItem.Text = "New multiplayer game"; + // + // joinMultiplayerGameToolStripMenuItem + // + this.joinMultiplayerGameToolStripMenuItem.BackColor = System.Drawing.Color.Black; + this.joinMultiplayerGameToolStripMenuItem.ForeColor = System.Drawing.Color.White; + this.joinMultiplayerGameToolStripMenuItem.Name = "joinMultiplayerGameToolStripMenuItem"; + this.joinMultiplayerGameToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + this.joinMultiplayerGameToolStripMenuItem.Text = "Join multiplayer game"; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Black; + this.ClientSize = new System.Drawing.Size(624, 442); + this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.panel1); + this.ForeColor = System.Drawing.Color.White; + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Snake Game"; + this.Load += new System.EventHandler(this.Form1_Load); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem gameToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem newSingleplayerGameToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem newMultiplayerGameToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem joinMultiplayerGameToolStripMenuItem; + } +} + diff --git a/SnakeGame/Form1.cs b/SnakeGame/Form1.cs new file mode 100644 index 0000000..e22509b --- /dev/null +++ b/SnakeGame/Form1.cs @@ -0,0 +1,62 @@ +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 SnakeGame +{ + public partial class Form1 : Form + { + public static Timer Timer; + public Form1() + { + InitializeComponent(); + /*Bitmap img = new Bitmap(1, 1); + img.SetPixel(0, 0, Color.Black); + menuStrip1.BackgroundImage = img; + newSingleplayerGameToolStripMenuItem.BackgroundImage = img; + newMultiplayerGameToolStripMenuItem.BackgroundImage = img; + joinMultiplayerGameToolStripMenuItem.BackgroundImage = img;*/ + menuStrip1.Renderer = new ToolStripProfessionalRenderer(new MenuColorTable()); + menuStrip1.ForeColor = Color.White; + GameRenderer.Panel = panel1; + Timer = new Timer(); + Timer.Interval = Game.UpdateTime; + Timer.Tick += delegate + { + Timer.Stop(); + Game.Refresh(); + Timer.Interval = Game.UpdateTime; + Timer.Start(); + }; + Timer.Start(); + } + + private void Form1_Load(object sender, EventArgs e) + { + Game.Load(panel1.Size); + } + + private void panel1_Paint(object sender, PaintEventArgs e) + { + GameRenderer.Render(); + } + + private void Form1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Down) + Game.MoveDirection = Direction.Down; + else if (e.KeyCode == Keys.Up) + Game.MoveDirection = Direction.Up; + else if (e.KeyCode == Keys.Left) + Game.MoveDirection = Direction.Left; + else if (e.KeyCode == Keys.Right) + Game.MoveDirection = Direction.Right; + } + } +} diff --git a/SnakeGame/Form1.resx b/SnakeGame/Form1.resx new file mode 100644 index 0000000..d5494e3 --- /dev/null +++ b/SnakeGame/Form1.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SnakeGame/Game.cs b/SnakeGame/Game.cs new file mode 100644 index 0000000..d42a3d6 --- /dev/null +++ b/SnakeGame/Game.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SnakeGame +{ + public static class Game + { + public static SqCoord GameSize; + public static List GameField; + public static SqCoord PlayerPos; + public static int Length = 4; + public static int UpdateTime = 2000; + public static Direction MoveDirection; + + public static void Start(GameStartMode mode) + { + switch(mode) + { + case GameStartMode.SinglePlayer: + break; + default: + throw new ArgumentException(); + } + } + + public static void Load(Size size) + { + //GameSize = size; + GameSize = SquareCoord.PointToSqCoord(new Point(size)); + GameField = new List(GameSize.X * GameSize.Y); + PlayerPos = new SqCoord { X = GameSize.X / 2, Y = 1 }; + for (int i = 0; i < GameSize.X; i++) + { + for (int j = 0; j < GameSize.Y; j++) + { + SqCoord coord = new SqCoord { X = i, Y = j, Tick = 0 }; + if (i == 0 || j == 0 || i == GameSize.X - 1 || j == GameSize.Y - 1) + coord.Tick = -1; + else if (i == PlayerPos.X && j == PlayerPos.Y) + coord.Tick = 4; + GameField.Add(coord); + } + } + //GameField.Single(entry => entry.X == PlayerPos.X && entry.Y == PlayerPos.Y).Tick; + /*for (int i = 0; i < GameField.Count; i++) + { + if(GameField[i].X==PlayerPos.X && GameField[i].Y==PlayerPos.Y) + { + GameField[i].Tick = Length; + } + }*/ + MoveDirection = Direction.Down; + GameRenderer.Render(); + } + + public static void Refresh() + { + //Decrease any positive Ticks; if next player position is other than zero, game over + //Otherwise set next player position and set Tick on player position to current Length + //Console.WriteLine("Refreshing..."); + for (int i = 0; i < GameField.Count; i++) + { + if (GameField[i].Tick > 0) + GameField[i] = new SqCoord { X = GameField[i].X, Y = GameField[i].Y, Tick = GameField[i].Tick - 1 }; + } + SqCoord nextcoord; + switch (MoveDirection) + { + case Direction.Down: + nextcoord = new SqCoord { X = PlayerPos.X, Y = PlayerPos.Y + 1 }; + break; + case Direction.Left: + nextcoord = new SqCoord { X = PlayerPos.X - 1, Y = PlayerPos.Y }; + break; + case Direction.Right: + nextcoord = new SqCoord { X = PlayerPos.X + 1, Y = PlayerPos.Y }; + break; + case Direction.Up: + nextcoord = new SqCoord { X = PlayerPos.X, Y = PlayerPos.Y - 1 }; + break; + default: + nextcoord = PlayerPos; + break; + } + if (Game.GetCoord(nextcoord).Tick != 0) + Stop(); + for (int i = 0; i < GameField.Count; i++) + { + if (GameField[i].X == nextcoord.X && GameField[i].Y == nextcoord.Y) + { + GameField[i] = new SqCoord { X = nextcoord.X, Y = nextcoord.Y, Tick = Length }; + PlayerPos = GameField[i]; + } + } + GameRenderer.Render(); + } + + public static SqCoord GetCoord(SqCoord nextcoord) + { + return GameField.Single(entry => entry.X == nextcoord.X && entry.Y == nextcoord.Y); + } + + public static void Stop() + { + Form1.Timer.Stop(); + MessageBox.Show("Game over!"); + } + } + public enum GameStartMode + { + SinglePlayer, + MultiPlayer, + Connect + } + public enum Direction + { + Up, + Down, + Left, + Right + } +} diff --git a/SnakeGame/GameRenderer.cs b/SnakeGame/GameRenderer.cs new file mode 100644 index 0000000..d658a8a --- /dev/null +++ b/SnakeGame/GameRenderer.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SnakeGame +{ + public static class GameRenderer + { + public static Panel Panel; + public static void Render() + { + foreach(var coord in Game.GameField) + { + if (coord.Tick == -1) + RenderSquare(coord, Color.Red); + else if (coord.Tick == 0) + RenderSquare(coord, Color.Black); + else + RenderSquare(coord, Color.Green); + } + } + private static void RenderSquare(SqCoord coord, Color color) + { + Graphics gr = Panel.CreateGraphics(); + gr.FillRectangle(new SolidBrush(color), SquareCoord.SqCoordToRect(coord)); + } + } +} diff --git a/SnakeGame/MenuColorTable.cs b/SnakeGame/MenuColorTable.cs new file mode 100644 index 0000000..b82c0e4 --- /dev/null +++ b/SnakeGame/MenuColorTable.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SnakeGame +{ + public class MenuColorTable : ProfessionalColorTable + { + public override Color MenuItemSelected + { + get + { + return Color.Black; + } + } + public override Color MenuStripGradientBegin + { + get + { + return Color.Black; + } + } + public override Color MenuStripGradientEnd + { + get + { + return Color.Blue; + } + } + public override Color MenuBorder + { + get + { + return Color.Black; + } + } + public override Color MenuItemPressedGradientBegin + { + get + { + return Color.Aqua; + } + } + public override Color MenuItemPressedGradientEnd + { + get + { + return Color.Black; + } + } + public override Color MenuItemSelectedGradientBegin + { + get + { + return Color.Blue; + } + } + public override Color MenuItemSelectedGradientEnd + { + get + { + return Color.Black; + } + } + public override Color MenuItemBorder + { + get + { + return Color.Blue; + } + } + } +} diff --git a/SnakeGame/Program.cs b/SnakeGame/Program.cs new file mode 100644 index 0000000..a99cb34 --- /dev/null +++ b/SnakeGame/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace SnakeGame +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/SnakeGame/Properties/AssemblyInfo.cs b/SnakeGame/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d91f0a3 --- /dev/null +++ b/SnakeGame/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("SnakeGame")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SnakeGame")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("6f791805-d24e-4188-a285-3b01d6d6725a")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SnakeGame/Properties/Resources.Designer.cs b/SnakeGame/Properties/Resources.Designer.cs new file mode 100644 index 0000000..2ccc43d --- /dev/null +++ b/SnakeGame/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34209 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SnakeGame.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SnakeGame.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/SnakeGame/Properties/Resources.resx b/SnakeGame/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/SnakeGame/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SnakeGame/Properties/Settings.Designer.cs b/SnakeGame/Properties/Settings.Designer.cs new file mode 100644 index 0000000..30862b8 --- /dev/null +++ b/SnakeGame/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34209 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace SnakeGame.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/SnakeGame/Properties/Settings.settings b/SnakeGame/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/SnakeGame/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SnakeGame/SnakeGame.csproj b/SnakeGame/SnakeGame.csproj new file mode 100644 index 0000000..e7091fc --- /dev/null +++ b/SnakeGame/SnakeGame.csproj @@ -0,0 +1,92 @@ + + + + + Debug + AnyCPU + {7CB0C0BB-9EDD-48BA-B19C-306C444D37DE} + WinExe + Properties + SnakeGame + SnakeGame + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + \ No newline at end of file diff --git a/SnakeGame/SquareCoord.cs b/SnakeGame/SquareCoord.cs new file mode 100644 index 0000000..ce347f1 --- /dev/null +++ b/SnakeGame/SquareCoord.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SnakeGame +{ + public static class SquareCoord + { + private static int x; + public static int X + { + get + { + return x; + } + set + { + x = value; + Game.Refresh(); + } + } + private static int y; + public static int Y + { + get + { + return y; + } + set + { + y = value; + Game.Refresh(); + } + } + private const int res = 50; + + public static Point SqCoordToPoint(SqCoord coord) + { + return new Point(coord.X * res, coord.Y * res); + } + public static SqCoord PointToSqCoord(Point point) + { + return new SqCoord { X = point.X / res, Y = point.Y / res }; + } + public static Rectangle SqCoordToRect(SqCoord coord) + { + return new Rectangle(coord.X * res, coord.Y * res, coord.X * res + res, coord.Y * res + res); + } + } + public struct SqCoord + { + public int X { get; set; } + public int Y { get; set; } + /// + /// Used to determine snake square "expiration". -1 means wall. Game over if other than zero in next player position. + /// + public int Tick { get; set; } + } +} diff --git a/packages/repositories.config b/packages/repositories.config new file mode 100644 index 0000000..52e70f9 --- /dev/null +++ b/packages/repositories.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file