working so hard
This commit is contained in:
parent
bf67e0c7b5
commit
077e0e5271
4 changed files with 174 additions and 14 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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); }
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 285 B After Width: | Height: | Size: 273 B |
Binary file not shown.
Before Width: | Height: | Size: 286 B After Width: | Height: | Size: 275 B |
Reference in a new issue