Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.IO;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- PictureBox[,] picFeld;
- int intZeile;
- int intSpalte;
- int zeileSP;
- int spalteSP;
- int zeileGG;
- int spalteGG;
- int intPunktAnzahl;
- String strPfad;
- public const int cMaxSpalten = 10;
- public const int cMaxZeilen = 10;
- public const int cPicGroesse = 64;
- public int intMaxSpalten = 10;
- public int intMaxZeilen = 10;
- public int intPicGrgoesse = 64;
- const int intAbstandLinks = 20;
- const int intAbstandOben = 50;
- const int cIntMauer = 1;
- const int cIntFeld = 2;
- const int cIntPunkt = 3;
- const int cIntSpieler = 4;
- const int cIntGegner = 5;
- const int cIntRight = 1;
- const int cIntLeft = 2;
- const int cIntTop = 3;
- const int cIntBot = 4;
- int intSpielerRichtung;
- int intDragDropTag;
- int intLVL = 1;
- bool bolSpielerGesetzt;
- Random rnd = new Random();
- /* int Zeile;
- int Spalte;
- public const int maxSpalten = 10;
- public const int maxZeilen = 10;
- public const int picGrgoesse = 64;
- üublic int
- const int spieler = 1;
- const int Mauer = 2;
- PictureBox feld;
- */
- /*
- public Form1()
- {
- InitializeComponent();
- bmp = new Bitmap(pbSpieler.Width, pbSpieler.Height);
- pbSpieler.Image = Image.FromFile(@"D:\Pacmen\spieler.bmp");
- pbMauer.Image = Image.FromFile(@"D:\Pacmen\mauer.bmp");
- pbLeer.Image = Image.FromFile(@"D:\Pacmen\LeeresFeld.bmp");
- pbFeld.Image = Image.FromFile(@"D:\Pacmen\feld.bmp");
- pbGeist.Image = Image.FromFile(@"D:\Pacmen\geist_gruen.bmp");
- for (Zeile = 0; Zeile < maxZeilen; Zeile++)
- {
- for (Spalte = 0; Spalte < maxSpalten; Spalte++)
- {
- PictureBox pFeld = new PictureBox();
- pFeld.Image = Image.FromFile(@"D:\Pacmen\feld.bmp");
- pFeld.Tag =
- }
- }
- }
- }
- }
- */
- public Form1()
- {
- InitializeComponent();
- pbFeld.Image = Image.FromFile(@"D:\Pacmen\feld.bmp");
- pbGeist.Image = Image.FromFile(@"D:\Pacmen\geist_gruen.bmp");
- // pbLeer.Image = Image.FromFile(@"D:\Pacmen\LeeresFeld.bmp");
- pbMauer.Image = Image.FromFile(@"D:\Pacmen\Mauer.bmp");
- pbPunkt.Image = Image.FromFile(@"D:\Pacmen\Punkt.bmp");
- pbSpieler.Image = Image.FromFile(@"D:\Pacmen\Spieler.bmp");
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- zeichneFeld();
- zeichneForm();
- loadLevel();
- }
- private void loadLevel()
- {
- /* openFileDialog1.Title = "Load a PCM- File...";
- if (openFileDialog1.ShowDialog() == DialogResult.OK)
- {
- strPfad = openFileDialog1.FileName;*/
- strPfad = @"C:\Users\Ws\Documents\Visual Studio 2010\Projects\Pacman-Game\Level\level" +intLVL+".pcm";
- FileStream rStream = new FileStream(strPfad, FileMode.Open, FileAccess.Read);
- StreamReader strReader = new StreamReader(rStream);
- for (intZeile = 0; intZeile < intMaxZeilen; intZeile++)
- {
- for (intSpalte = 0; intSpalte < intMaxSpalten; intSpalte++)
- {
- picFeld[intZeile, intSpalte].Tag = Convert.ToInt16(strReader.ReadLine());
- switch (Convert.ToInt16(picFeld[intZeile, intSpalte].Tag))
- {
- case cIntFeld:
- picFeld[intZeile, intSpalte].Image = pbFeld.Image;
- picFeld[intZeile, intSpalte].Tag = cIntFeld;
- break;
- case cIntMauer:
- picFeld[intZeile, intSpalte].Image = pbMauer.Image;
- picFeld[intZeile, intSpalte].Tag = cIntMauer;
- break;
- case cIntPunkt:
- picFeld[intZeile, intSpalte].Image = pbPunkt.Image;
- picFeld[intZeile, intSpalte].Tag = cIntPunkt;
- intPunktAnzahl++;
- break;
- case cIntSpieler:
- picFeld[intZeile, intSpalte].Image = pbFeld.Image;
- picFeld[intZeile, intSpalte].Tag = cIntFeld;
- zeileSP = intZeile;
- spalteSP = intSpalte;
- pbSpieler.Left = picFeld[zeileSP, spalteSP].Left;
- pbSpieler.Top = picFeld[zeileSP, spalteSP].Top;
- break;
- case cIntGegner:
- picFeld[intZeile, intSpalte].Image = pbFeld.Image;
- picFeld[intZeile, intSpalte].Tag = cIntFeld;
- zeileGG = intZeile;
- spalteGG = intSpalte;
- pbGeist.Left = picFeld[zeileGG, spalteGG].Left;
- pbGeist.Top = picFeld[zeileGG, spalteGG].Top;
- break;
- }
- }
- }
- strReader.Close();
- rStream.Close();
- lblPunkt.Text = "Münze: " + Convert.ToString(intPunktAnzahl);
- }
- private void zeichneFeld()
- {
- pbFeld.Tag = cIntFeld;
- pbMauer.Tag = cIntMauer;
- pbPunkt.Tag = cIntPunkt;
- pbSpieler.Tag = cIntSpieler;
- pbGeist.Tag = cIntGegner;
- picFeld = new PictureBox[intMaxZeilen, intMaxSpalten];
- for (intZeile = 0; intZeile < intMaxZeilen; intZeile++)
- {
- for (intSpalte = 0; intSpalte < intMaxSpalten; intSpalte++)
- {
- PictureBox pFeld = new PictureBox();
- pFeld.Image = pbFeld.Image;
- pFeld.Tag = cIntFeld;
- pFeld.Left = intAbstandLinks + intSpalte * intPicGrgoesse;
- pFeld.Top = intAbstandOben + intZeile * intPicGrgoesse;
- pFeld.Width = intPicGrgoesse;
- pFeld.Height = intPicGrgoesse;
- pFeld.BorderStyle = BorderStyle.FixedSingle;
- picFeld[intZeile, intSpalte] = pFeld;
- picFeld[intZeile, intSpalte].Tag = cIntFeld;
- pFeld.Name = (char)(intZeile + 65) + intSpalte.ToString();
- this.Controls.Add(pFeld);
- pFeld.DragDrop += new DragEventHandler(pFeld_DragDrop);
- pFeld.DragEnter += new DragEventHandler(pFeld_DragEnter);
- pFeld.AllowDrop = true;
- }
- }
- }
- private void zeichneForm()
- {
- pbFeld.Left = 2 * intAbstandLinks + intPicGrgoesse * intMaxSpalten;
- pbMauer.Left = 2 * intAbstandLinks + intPicGrgoesse * intMaxSpalten;
- pbPunkt.Left = 2 * intAbstandLinks + intPicGrgoesse * intMaxSpalten;
- pbSpieler.Left = 2 * intAbstandLinks + intPicGrgoesse * intMaxSpalten;
- pbGeist.Left = 2 * intAbstandLinks + intPicGrgoesse * intMaxSpalten;
- pbFeld.Top = intAbstandOben;
- pbMauer.Top = intAbstandOben + intPicGrgoesse * 2;
- pbPunkt.Top = intAbstandOben + intPicGrgoesse * 4;
- pbSpieler.Top = intAbstandOben + intPicGrgoesse * 6;
- pbGeist.Top = intAbstandOben + intPicGrgoesse * 8;
- this.Width = pbFeld.Left + pbFeld.Width + intAbstandLinks;
- this.Height = intMaxZeilen * intPicGrgoesse + 2 * intAbstandOben;
- }
- private void pFeld_DragDrop(object sender, DragEventArgs e)
- {
- PictureBox picZiel = sender as PictureBox;
- int intZielTag = Convert.ToInt16(picZiel.Tag);
- picZiel.Image = (Bitmap)e.Data.GetData(DataFormats.Bitmap);
- int intSpalte = (picZiel.Left - intAbstandLinks) / picZiel.Width;
- int intZeile = (picZiel.Top - intAbstandOben) / picZiel.Height;
- picFeld[intZeile, intSpalte].Tag = intDragDropTag;
- picZiel.Tag = Convert.ToString(intDragDropTag);
- if (intDragDropTag == cIntSpieler)
- {
- bolSpielerGesetzt = true;
- }
- else if (intZielTag == cIntSpieler)
- {
- bolSpielerGesetzt = false;
- }
- }
- private void pFeld_DragEnter(object sender, DragEventArgs e)
- {
- e.Effect = DragDropEffects.Move;
- }
- private void picAuswahl_MouseDown(object sender, MouseEventArgs e)
- {
- if (e.Button == System.Windows.Forms.MouseButtons.Left)
- {
- PictureBox picQuelle = sender as PictureBox;
- intDragDropTag = Convert.ToInt16(picQuelle.Tag);
- if (!(intDragDropTag == cIntSpieler & bolSpielerGesetzt == true))
- {
- DragDropEffects dropeffect = picQuelle.DoDragDrop(picQuelle.Image, DragDropEffects.Move);
- }
- }
- }
- private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- saveFileDialog1.AddExtension = true;
- saveFileDialog1.Title = "Save the stage as..";
- saveFileDialog1.Filter = "Pacman-File (*.pcm) | *.pcm";
- DialogResult dr = saveFileDialog1.ShowDialog();
- if (dr == DialogResult.OK)
- {
- strPfad = saveFileDialog1.FileName;
- FileStream wStream = new FileStream(strPfad, FileMode.OpenOrCreate, FileAccess.Write);
- StreamWriter strWriter = new StreamWriter(wStream);
- for (intZeile = 0; intZeile < intMaxZeilen; intZeile++)
- {
- for (intSpalte = 0; intSpalte < intMaxSpalten; intSpalte++)
- {
- strWriter.WriteLine(Convert.ToString(picFeld[intZeile, intSpalte].Tag));
- }
- }
- strWriter.Close();
- wStream.Close();
- }
- }
- private void detailsToolStripMenuItem_Click(object sender, EventArgs e)
- {
- foreach (Control ctrl in this.Controls)
- {
- if (ctrl.GetType().Name == "PictureBox")
- {
- MessageBox.Show(ctrl.Name);
- }
- }
- }
- private void openFileToolStripMenuItem_Click(object sender, EventArgs e)
- {
- openFileDialog1.Title = "Load a PCM- File...";
- if (openFileDialog1.ShowDialog() == DialogResult.OK)
- {
- strPfad = openFileDialog1.FileName;
- FileStream rStream = new FileStream(strPfad, FileMode.Open, FileAccess.Read);
- StreamReader strReader = new StreamReader(rStream);
- for (intZeile = 0; intZeile < intMaxZeilen; intZeile++)
- {
- for (intSpalte = 0; intSpalte < intMaxSpalten; intSpalte++)
- {
- picFeld[intZeile, intSpalte].Tag = Convert.ToInt16(strReader.ReadLine());
- switch (Convert.ToInt16(picFeld[intZeile, intSpalte].Tag))
- {
- case cIntFeld:
- picFeld[intZeile, intSpalte].Image = pbFeld.Image;
- picFeld[intZeile, intSpalte].Tag = cIntFeld;
- break;
- case cIntMauer:
- picFeld[intZeile, intSpalte].Image = pbMauer.Image;
- picFeld[intZeile, intSpalte].Tag = cIntMauer;
- break;
- case cIntPunkt:
- picFeld[intZeile, intSpalte].Image = pbPunkt.Image;
- picFeld[intZeile, intSpalte].Tag = cIntPunkt;
- break;
- case cIntSpieler:
- picFeld[intZeile, intSpalte].Image = pbSpieler.Image;
- picFeld[intZeile, intSpalte].Tag = cIntSpieler;
- break;
- case cIntGegner:
- picFeld[intZeile, intSpalte].Image = pbGeist.Image;
- picFeld[intZeile, intSpalte].Tag = cIntGegner;
- break;
- }
- }
- }
- strReader.Close();
- rStream.Close();
- }
- }
- private void Form1_KeyDown(object sender, KeyEventArgs e)
- {
- timePlayer.Enabled = true;
- timeGhost.Enabled = true;
- switch (e.KeyCode)
- {
- case Keys.Up:
- intSpielerRichtung = cIntTop;
- break;
- case Keys.Down:
- intSpielerRichtung = cIntBot;
- break;
- case Keys.Left:
- intSpielerRichtung = cIntLeft;
- break;
- case Keys.Right:
- intSpielerRichtung = cIntRight;
- break;
- }
- switch (intSpielerRichtung)
- {
- case cIntLeft:
- pbSpieler.Image = Image.FromFile(@"D:\Pacmen\spielerLinks.bmp");
- break;
- case cIntRight:
- pbSpieler.Image = Image.FromFile(@"D:\Pacmen\spieler.bmp");
- break;
- case cIntTop:
- pbSpieler.Image = Image.FromFile(@"D:\Pacmen\spielerOben.bmp");
- break;
- case cIntBot:
- pbSpieler.Image = Image.FromFile(@"D:\Pacmen\spielerUnten.bmp");
- break;
- }
- pbSpieler.Refresh();
- }
- private void timePlayer_Tick(object sender, EventArgs e)
- {
- switch (intSpielerRichtung)
- {
- case cIntTop:
- if (zeileSP - 1 < 0)
- {
- break;
- }
- if (picFeld[zeileSP - 1, spalteSP].Tag.Equals(cIntMauer))
- {
- break;
- }
- else
- {
- if (picFeld[zeileSP - 1, spalteSP].Tag.Equals(cIntPunkt))
- {
- intPunktAnzahl--;
- lblPunkt.Text = "Münze: " + Convert.ToString(intPunktAnzahl);
- }
- pbSpieler.Location = new Point(picFeld[zeileSP, spalteSP].Location.X, picFeld[zeileSP, spalteSP].Location.Y - cPicGroesse);
- zeileSP = zeileSP - 1;
- picFeld[zeileSP, spalteSP].Image = pbFeld.Image;
- picFeld[zeileSP, spalteSP].Tag = cIntFeld;
- intSpielerRichtung = cIntTop;
- break;
- }
- case cIntBot:
- if (zeileSP + 1 >9)
- {
- break;
- }
- if (picFeld[zeileSP + 1, spalteSP].Tag.Equals(cIntMauer))
- {
- break;
- }
- else
- {
- if (picFeld[zeileSP + 1, spalteSP].Tag.Equals(cIntPunkt))
- {
- intPunktAnzahl--;
- lblPunkt.Text = "Münze: " + Convert.ToString(intPunktAnzahl);
- }
- pbSpieler.Location = new Point(picFeld[zeileSP, spalteSP].Location.X, picFeld[zeileSP, spalteSP].Location.Y + cPicGroesse);
- zeileSP = zeileSP + 1;
- picFeld[zeileSP, spalteSP].Image = pbFeld.Image;
- picFeld[zeileSP, spalteSP].Tag = cIntFeld;
- intSpielerRichtung = cIntBot;
- break;
- }
- case cIntLeft:
- if (spalteSP - 1 < 0)
- {
- break;
- }
- if (picFeld[zeileSP, spalteSP - 1].Tag.Equals(cIntMauer))
- {
- break;
- }
- else
- {
- if (picFeld[zeileSP, spalteSP - 1].Tag.Equals(cIntPunkt))
- {
- intPunktAnzahl--;
- lblPunkt.Text = "Münze: " + Convert.ToString(intPunktAnzahl);
- }
- pbSpieler.Location = new Point(picFeld[zeileSP, spalteSP].Location.X - cPicGroesse, picFeld[zeileSP, spalteSP].Location.Y);
- spalteSP = spalteSP - 1;
- picFeld[zeileSP, spalteSP].Image = pbFeld.Image;
- picFeld[zeileSP, spalteSP].Tag = cIntFeld;
- intSpielerRichtung = cIntLeft;
- break;
- }
- case cIntRight:
- if (spalteSP + 1 > 9)
- {
- break;
- }
- if (picFeld[zeileSP, spalteSP + 1].Tag.Equals(cIntMauer))
- {
- break;
- }
- else
- {
- if (picFeld[zeileSP, spalteSP + 1].Tag.Equals(cIntPunkt))
- {
- intPunktAnzahl--;
- lblPunkt.Text = "Münze: " + Convert.ToString(intPunktAnzahl);
- }
- pbSpieler.Location = new Point(picFeld[zeileSP, spalteSP].Location.X + cPicGroesse, picFeld[zeileSP, spalteSP].Location.Y);
- spalteSP = spalteSP + 1;
- picFeld[zeileSP, spalteSP].Image = pbFeld.Image;
- picFeld[zeileSP, spalteSP].Tag = cIntFeld;
- intSpielerRichtung = cIntRight;
- break;
- }
- }
- if (intPunktAnzahl == 0)
- {
- timePlayer.Enabled = false;
- timeGhost.Enabled = false;
- MessageBox.Show("Level geschafft!", "Finish");
- intLVL++;
- loadLevel();
- }
- gameOver();
- }
- private void gameOver()
- {
- if (spalteSP == spalteGG && zeileSP == zeileGG)
- {
- timePlayer.Enabled = false;
- timeGhost.Enabled = false;
- MessageBox.Show("Game Over", "Finish");
- var again = MessageBox.Show("Neustart?", "Neustart", MessageBoxButtons.OKCancel);
- if (again == DialogResult.OK)
- {
- loadLevel();
- }
- else
- {
- this.Close();
- }
- }
- }
- private void timeGhost_Tick(object sender, EventArgs e)
- {
- int intGegnerRichtung = 0;
- Boolean boolOK = false;
- int intZaehler = 0;
- do
- {
- if (spalteGG < spalteSP)
- {
- intGegnerRichtung = cIntRight;
- }
- else if (spalteGG > spalteSP)
- {
- intGegnerRichtung = cIntLeft;
- }
- else if (zeileGG < zeileSP)
- {
- intGegnerRichtung = cIntBot;
- }
- else if (zeileGG > zeileSP)
- {
- intGegnerRichtung = cIntTop;
- }
- if (intZaehler > 4)
- {
- intGegnerRichtung = rnd.Next(1, 5);
- }
- switch (intGegnerRichtung)
- {
- case cIntLeft:
- if (spalteGG > 0)
- {
- if (Convert.ToInt16(picFeld[zeileGG, spalteGG - 1].Tag) != cIntMauer)
- {
- // pbGeist.Location = new Point(picFeld[zeileGG, spalteGG].Location.X - cPicGroesse, picFeld[zeileGG, spalteGG].Location.Y);
- pbGeist.Left = pbGeist.Left - cPicGroesse;
- spalteGG = spalteGG - 1;
- boolOK = true;
- }
- }
- break;
- case cIntRight:
- if (spalteGG < 10 - 1)
- {
- if (Convert.ToInt16(picFeld[zeileGG, spalteGG + 1].Tag) != cIntMauer)
- {
- // pbGeist.Location = new Point(picFeld[zeileGG, spalteGG].Location.X + cPicGroesse, picFeld[zeileGG, spalteGG].Location.Y);
- pbGeist.Left = pbGeist.Left + cPicGroesse;
- spalteGG = spalteGG + 1;
- boolOK = true;
- }
- }
- break;
- case cIntTop:
- if (zeileGG > 0)
- {
- if (Convert.ToInt16(picFeld[zeileGG - 1, spalteGG].Tag) != cIntMauer)
- {
- //pbGeist.Location = new Point(picFeld[zeileGG, spalteGG].Location.X - cPicGroesse, picFeld[zeileGG, spalteGG].Location.Y - cPicGroesse);
- pbGeist.Top = pbGeist.Top - cPicGroesse;
- zeileGG = zeileGG - 1;
- boolOK = true;
- }
- }
- break;
- case cIntBot:
- if (zeileGG < 10 - 1)
- {
- if (Convert.ToInt16(picFeld[zeileGG + 1, spalteGG].Tag) != cIntMauer)
- {
- //pbGeist.Location = new Point(picFeld[zeileGG, spalteGG].Location.X - cPicGroesse, picFeld[zeileGG, spalteGG].Location.Y + cPicGroesse);
- pbGeist.Top = pbGeist.Top + cPicGroesse;
- zeileGG = zeileGG + 1;
- boolOK = true;
- }
- }
- break;
- }
- intZaehler++;
- } while (boolOK == false);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement