working so hard

This commit is contained in:
lempamo 2017-02-26 17:31:19 -05:00
parent bf67e0c7b5
commit 077e0e5271
4 changed files with 174 additions and 14 deletions

View file

@ -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;
}
}

View file

@ -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