aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms
diff options
context:
space:
mode:
Diffstat (limited to 'ShiftOS.WinForms')
-rw-r--r--ShiftOS.WinForms/Applications/ShiftSweeper.Designer.cs14
-rw-r--r--ShiftOS.WinForms/Applications/ShiftSweeper.cs174
-rw-r--r--ShiftOS.WinForms/Resources/SweeperTile1.pngbin285 -> 273 bytes
-rw-r--r--ShiftOS.WinForms/Resources/SweeperTile2.pngbin286 -> 275 bytes
4 files changed, 174 insertions, 14 deletions
diff --git a/ShiftOS.WinForms/Applications/ShiftSweeper.Designer.cs b/ShiftOS.WinForms/Applications/ShiftSweeper.Designer.cs
index f5d7ddd..729bc95 100644
--- a/ShiftOS.WinForms/Applications/ShiftSweeper.Designer.cs
+++ b/ShiftOS.WinForms/Applications/ShiftSweeper.Designer.cs
@@ -34,6 +34,7 @@
this.buttonM = new System.Windows.Forms.Button();
this.buttonH = new System.Windows.Forms.Button();
this.lblmines = new System.Windows.Forms.Label();
+ this.lbltime = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
@@ -92,6 +93,7 @@
this.buttonM.TabIndex = 3;
this.buttonM.Text = "Medium";
this.buttonM.UseVisualStyleBackColor = true;
+ this.buttonM.Click += new System.EventHandler(this.buttonM_Click);
//
// buttonH
//
@@ -101,6 +103,7 @@
this.buttonH.TabIndex = 4;
this.buttonH.Text = "Hard";
this.buttonH.UseVisualStyleBackColor = true;
+ this.buttonH.Click += new System.EventHandler(this.buttonH_Click);
//
// lblmines
//
@@ -111,10 +114,20 @@
this.lblmines.TabIndex = 5;
this.lblmines.Text = "Mines: 0";
//
+ // lbltime
+ //
+ this.lbltime.AutoSize = true;
+ this.lbltime.Location = new System.Drawing.Point(188, 22);
+ this.lbltime.Name = "lbltime";
+ this.lbltime.Size = new System.Drawing.Size(42, 13);
+ this.lbltime.TabIndex = 6;
+ this.lbltime.Text = "Time: 0";
+ //
// ShiftSweeper
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.lbltime);
this.Controls.Add(this.lblmines);
this.Controls.Add(this.buttonH);
this.Controls.Add(this.buttonM);
@@ -137,5 +150,6 @@
private System.Windows.Forms.Button buttonM;
private System.Windows.Forms.Button buttonH;
private System.Windows.Forms.Label lblmines;
+ private System.Windows.Forms.Label lbltime;
}
}
diff --git a/ShiftOS.WinForms/Applications/ShiftSweeper.cs b/ShiftOS.WinForms/Applications/ShiftSweeper.cs
index 70c69d7..360ef16 100644
--- a/ShiftOS.WinForms/Applications/ShiftSweeper.cs
+++ b/ShiftOS.WinForms/Applications/ShiftSweeper.cs
@@ -19,36 +19,33 @@ namespace ShiftOS.WinForms.Applications
{
private bool gameplayed = false;
private int mineCount = 0;
- private int[,] minemap;
+ private int[,] minemap; //Represents status of tiles. 0-8 = how many mines surrounding. -1 = mine. -2 = flagged mine. -3 to -11 = flagged safe.
+ private Timer ticking = new Timer();
+ private int minetimer;
- public ShiftSweeper()
- {
- InitializeComponent();
- }
+ public ShiftSweeper() { InitializeComponent(); }
public void OnLoad()
{
buttonE.Visible = true;
buttonM.Visible = ShiftoriumFrontend.UpgradeInstalled("shiftsweeper_medium");
buttonH.Visible = ShiftoriumFrontend.UpgradeInstalled("shiftsweeper_hard");
+ ticking.Interval = 1000;
}
public void OnSkinLoad() { }
public bool OnUnload() { return true; }
- public void OnUpgrade()
- {
-
- }
+ public void OnUpgrade() { }
- private void buttonE_Click(object sender, EventArgs e)
- {
- startGame(0);
- }
+ private void buttonE_Click(object sender, EventArgs e) { startGame(0); }
private void startGame(int d)
{
+ lbltime.Text = "Time: 0";
+ minetimer = 0;
+ ticking.Start();
switch (d)
{
case 0:
@@ -57,9 +54,26 @@ namespace ShiftOS.WinForms.Applications
minefieldPanel.RowCount = 9;
break;
+ case 1:
+ mineCount = 40;
+ minefieldPanel.ColumnCount = 16;
+ minefieldPanel.RowCount = 16;
+ break;
+
+ case 2:
+ mineCount = 99;
+ minefieldPanel.ColumnCount = 30;
+ minefieldPanel.RowCount = 16;
+ break;
+
default:
throw new NullReferenceException();
}
+ lblmines.Text = "Mines: " + mineCount.ToString();
+ buttonE.Enabled = false;
+ buttonM.Enabled = false;
+ buttonH.Enabled = false;
+ gameplayed = true;
makegrid();
}
@@ -68,6 +82,7 @@ namespace ShiftOS.WinForms.Applications
Random rnd1 = new Random();
minemap = new int[minefieldPanel.ColumnCount, minefieldPanel.RowCount];
+ // Makes the minefield full of buttons
for (int x = 0; x < minefieldPanel.ColumnCount; x++)
{
for (int y = 0; y < minefieldPanel.RowCount; y++)
@@ -76,6 +91,43 @@ namespace ShiftOS.WinForms.Applications
minefieldPanel.Controls.Add(makeButton(x, y), x, y);
}
}
+
+ // Placing the mines
+ int currminecount = mineCount;
+ while (currminecount > 0)
+ {
+ int mineX = rnd1.Next(minefieldPanel.ColumnCount);
+ int mineY = rnd1.Next(minefieldPanel.RowCount);
+
+ if (minemap[mineX, mineY] == 0)
+ {
+ minemap[mineX, mineY] = -1;
+ currminecount--;
+ }
+ }
+
+ // Setting the numbers
+ for (int x = 0; x < minefieldPanel.ColumnCount; x++)
+ {
+ for (int y = 0; y < minefieldPanel.RowCount; y++)
+ {
+ if (minemap[x, y] != -1)
+ {
+ int numMines = 0;
+ for (int xx = -1; xx < 2; xx++)
+ {
+ for (int yy = -1; yy < 2; yy++)
+ {
+ if (x + xx >= 0 && y + yy >= 0 && x + xx < minefieldPanel.ColumnCount && y + yy < minefieldPanel.RowCount)
+ {
+ if (minemap[x + xx, y + yy] == -1) numMines++;
+ }
+ }
+ }
+ minemap[x, y] = numMines;
+ }
+ }
+ }
}
private Button makeButton(int col, int row)
@@ -85,15 +137,28 @@ namespace ShiftOS.WinForms.Applications
bttn.Text = "";
bttn.Name = col.ToString() + " " + row.ToString();
Controls.AddRange(new System.Windows.Forms.Control[] { bttn, });
+ bttn.Size = new System.Drawing.Size(minefieldPanel.Width / minefieldPanel.ColumnCount, minefieldPanel.Height / minefieldPanel.RowCount);
bttn.Click += new System.EventHandler(bttnOnclick);
bttn.MouseDown += new MouseEventHandler(mouseDwn);
bttn.MouseUp += new MouseEventHandler(mauseUp);
bttn.MouseHover += new EventHandler(mauseHov);
bttn.BackgroundImage = Properties.Resources.SweeperTileBlock;
+ bttn.MouseClick += new System.Windows.Forms.MouseEventHandler(this.bttnOnRightClick);
return bttn;
}
+ private void bttnOnRightClick(object sender, MouseEventArgs e)
+ {
+ if (!ticking.Enabled) return;
+
+ Button bttnClick = sender as Button;
+
+ if (bttnClick == null) return;
+
+ if (e.Button == MouseButtons.Left | e.Button == MouseButtons.Middle) return;
+ }
+
private void mauseHov(object sender, EventArgs e)
{
pictureBox1.BackgroundImage = Properties.Resources.SweeperNormalFace;
@@ -111,7 +176,88 @@ namespace ShiftOS.WinForms.Applications
private void bttnOnclick(object sender, EventArgs e)
{
-
+ if (!ticking.Enabled) return;
+
+ Button bttnClick = sender as Button;
+
+ if (bttnClick == null) return; //not a button.
+
+ string[] split = bttnClick.Name.Split(new Char[] { ' ' });
+
+ int x = System.Convert.ToInt32(split[0]);
+ int y = System.Convert.ToInt32(split[1]);
+
+
+
+ if (minemap[x, y] == -1)
+ {
+ ticking.Enabled = false;
+
+ buttonE.Enabled = true;
+ buttonM.Enabled = true;
+ buttonH.Enabled = true;
+
+ for (int xx = 0; xx < minefieldPanel.ColumnCount; xx++)
+ {
+ for (int yy = 0; yy < minefieldPanel.RowCount; yy++)
+ {
+ minefieldPanel.GetControlFromPosition(xx, yy).Enabled = false;
+ if (minemap[xx, yy] == -1)
+ {
+ minefieldPanel.GetControlFromPosition(xx, yy).BackgroundImage = Properties.Resources.SweeperTileBomb;
+ }
+
+ }
+ }
+ }
+ else if (minemap[x, y] < -1) return;
+ else removeBlank(x, y);
+ }
+
+ private void removeBlank(int x, int y)
+ {
+ if (!minefieldPanel.GetControlFromPosition(x, y).Enabled) return;
+ else
+ {
+ minefieldPanel.GetControlFromPosition(x, y).Enabled = false;
+ trueform(x, y);
+ for (int xx = -1; xx < 2; xx++)
+ {
+ for (int yy = -1; yy < 2; yy++)
+ {
+ if (x + xx >= 0 && y + yy >= 0 && x + xx < minefieldPanel.ColumnCount && y + yy < minefieldPanel.RowCount)
+ {
+ if (minefieldPanel.GetControlFromPosition(x + xx, y + yy).Enabled && minemap[x+xx,y+yy] != -1 && minemap[x + xx, y + yy] != -2)
+ {
+ minefieldPanel.GetControlFromPosition(x, y).Enabled = false;
+ if (minemap[x, y] == 0)
+ {
+ removeBlank(x + xx, y + yy);
+ }
+ }
+
+ }
+ }
+ }
+ }
+ }
+
+ private void trueform(int x, int y)
+ {
+ Button bttn = (Button)minefieldPanel.GetControlFromPosition(x, y);
+ if (minemap[x,y] == 0) bttn.BackgroundImage = Properties.Resources.SweeperTile0;
+ else if (minemap[x, y] == 1) bttn.BackgroundImage = Properties.Resources.SweeperTile1;
+ else if (minemap[x, y] == 2) bttn.BackgroundImage = Properties.Resources.SweeperTile2;
+ else if (minemap[x, y] == 3) bttn.BackgroundImage = Properties.Resources.SweeperTile3;
+ else if (minemap[x, y] == 4) bttn.BackgroundImage = Properties.Resources.SweeperTile4;
+ else if (minemap[x, y] == 5) bttn.BackgroundImage = Properties.Resources.SweeperTile5;
+ else if (minemap[x, y] == 6) bttn.BackgroundImage = Properties.Resources.SweeperTile6;
+ else if (minemap[x, y] == 7) bttn.BackgroundImage = Properties.Resources.SweeperTile7;
+ else if (minemap[x, y] == 8) bttn.BackgroundImage = Properties.Resources.SweeperTile8;
}
+
+ private void buttonM_Click(object sender, EventArgs e) { startGame(1); }
+
+ private void buttonH_Click(object sender, EventArgs e) { startGame(2); }
}
}
diff --git a/ShiftOS.WinForms/Resources/SweeperTile1.png b/ShiftOS.WinForms/Resources/SweeperTile1.png
index 06819d0..5fc6871 100644
--- a/ShiftOS.WinForms/Resources/SweeperTile1.png
+++ b/ShiftOS.WinForms/Resources/SweeperTile1.png
Binary files differ
diff --git a/ShiftOS.WinForms/Resources/SweeperTile2.png b/ShiftOS.WinForms/Resources/SweeperTile2.png
index eec00e9..22c5f02 100644
--- a/ShiftOS.WinForms/Resources/SweeperTile2.png
+++ b/ShiftOS.WinForms/Resources/SweeperTile2.png
Binary files differ