
1. Schritt
Nach dem Ausführen der Start-Datei kann die oben angezeigte Meldung erscheinen. Hier im Text auf 'Weitere Informationen klicken'
Das Spielt wurde von uns selbst in der Programmiersprache c# erstellt und könnt Ihr direkt von unserer Cloud downloaden. Bei Interesse erhaltet Ihr auch auf Anfrage über unserer Kontaktformular den orginal Quelltext zum Spiel.
Spiele Memory als Offline-Spiel kann nach dem Download und ggf. entpacken direkt von deinem PC aus gestartet werden.
Im Download enthalten sind hierbei auch die Beispiel-Bilddateien für das Spielfeld sowie das Spiel-Icon, Logo und das Bild für die Hidden-Card.
Diese könnte Ihr bei Bedarf auch einfach gegen andere Bilder eurer Wahl austauschen. Das einzige was Ihr beibehalten müsst,
ist die Namensgebung der Dateien, die Ihr in den Ordnern 'Memory_Pics' und 'Game_Pics' findet.
Die Namensgebung für die Spielkarten ist wie folgt anzugeben.
Die Karten, die zusammen gehören, müssen immer nach folgendem Schema bzw Bildpaaren benannt werden:
Um das Spiel zu beginnen, könnt Ihr einfach auf die erste Karte klicken. Diese wird nun aufgedeckt und gelb markiert.
Mit dem Klick auf die zweite Karte, wird diese ebenfalls aufgedeckt. Sind beide Karten, die aufgedeckt wurden identisch, bekommen diese einen Grünen Rahmen
und bleiben jetzt auch für das gesamte weitere Spiel aufgedeckt.
Sind die beiden Karten jedoch unterschiedlich, erhalten diese einen roten Rand und werden mit dem Aufdecken der nächsten Karte automatisch wieder verdeckt.
Gewonnen ist das Spiel, wenn alle Karten grün sind.
Am rechten Rand findet Ihr einen Counter, der eure Versuche zählt und am Ende eine Zusammenfassung anzeigt.
Viel Spaß beim Spielen.
(Microsoft .NET Framework 4.7 erforderlich)
Beim Download oder der Installation weist Microsoft unter Umständen darauf hin, dass das Programm von einem Unbekannten-Herausgeber ist. Das Programm lässt sich jedoch trotzdem Installieren.
Unter „Weiteren Informationen“ können Sie „Trotzdem ausführen“ auswählen. Um das Problem beim Download zu umgehen, können Sie auch einfach nur die *.zip herunterladen und entpacken.
Der Quellcode musste etwas angepasst werden, dass er auf der Homepage richtig angezeigt und eingebunden werden kann.
Er kann somit nicht 1 zu 1 in Visual Studio übernommen werden (Zusätzliche Zeilenumbrüche).
Es fehlen auch sämtliche Objekte, die zum Ausführen des Quellcodes erforderlich sind.
Gerne kann ich euch das Original zukommen lassen. Schreibt mir hierzu einfach über das Kontaktformular.
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ECTR_Memory
{
public partial class Form1 : Form
{
//Globale Variablen
ArrayList ListPicFiles = new ArrayList();
ArrayList ListRndNums = new ArrayList();
string strFullPath = AppDomain.CurrentDomain.BaseDirectory + @"Memory_Pics";
int[] arrintCompareCard = { -1, -1, -1 };
int[] arrintPicBoxNum = { 0, 0 };
bool intResultnOK = false; // 0=nOK; 1=OK; 2=Restart
public Form1(){
InitializeComponent();
if (File.Exists(strFullPath + @"\Game_Pics\icon.ico")){
this.Icon = new Icon(strFullPath + @"\Game_Pics\icon.ico");
}
if (File.Exists(strFullPath + @"\Game_Pics\logo.jpg")){
PicBoxLogo.Image = Image.FromFile(strFullPath + @"\Game_Pics\logo.jpg");
}
}
private void PictureBoxClick(object sender, EventArgs e){
if (intResultnOK == true){
intResultnOK = false;
((PictureBox)this.Controls["PicBox"+ arrintPicBoxNum[0]]).Image = ¶
Image.FromFile(strFullPath + @"\Game_Pics\hidden_card.jpg");
((PictureBox)this.Controls["PicBox"+ arrintPicBoxNum[1]]).Image = ¶
Image.FromFile(strFullPath + @"\Game_Pics\hidden_card.jpg");
((Label)this.Controls["lblPicBox" + arrintPicBoxNum[0]]).BackColor = ¶
Color.White;
((Label)this.Controls["lblPicBox" + arrintPicBoxNum[1]]).BackColor = ¶
Color.White;
arrintPicBoxNum[0] = 0;
arrintPicBoxNum[1] = 0;
}
if (sender is PictureBox){
arrintPicBoxNum[0] = Int16.Parse((((PictureBox)sender).Name). ¶
Replace("PicBox", ""));
if (arrintPicBoxNum[0] != arrintPicBoxNum[1]) {
int intCrpytNum = (int)ListRndNums[arrintPicBoxNum[0] - 1];
((PictureBox)this.Controls["PicBox" + arrintPicBoxNum[0]]).Image = ¶
Image.FromFile(strFullPath + @"\" + ListPicFiles[intCrpytNum]);
((Label)this.Controls["lblPicBox" + arrintPicBoxNum[0]]).BackColor = ¶
Color.Yellow;
//Auswertung
if (arrintCompareCard[0] == -1){
arrintCompareCard[0] = intCrpytNum;
arrintPicBoxNum[1] = arrintPicBoxNum[0];
}else{
if ((arrintCompareCard[0] % 2 == 1) || (arrintCompareCard[0] == 1)){
//ungerade
arrintCompareCard[1] = intCrpytNum;
arrintCompareCard[2] = arrintCompareCard[0];
}else{
//gerade
arrintCompareCard[1] = arrintCompareCard[0];
arrintCompareCard[2] = intCrpytNum;
}
if (arrintCompareCard[2] == (arrintCompareCard[1] + 1)){
//richtig
((PictureBox)this.Controls["PicBox" + arrintPicBoxNum[0]]).Enabled ¶
= false;
((PictureBox)this.Controls["PicBox" + arrintPicBoxNum[1]]).Enabled ¶
= false;
((Label)this.Controls["lblPicBox" + arrintPicBoxNum[0]]).BackColor ¶
= Color.Green;
((Label)this.Controls["lblPicBox" + arrintPicBoxNum[1]]).BackColor ¶
= Color.Green;
lblCardInGameValue.Text = Convert.ToString((Convert.ToInt16 ¶
(lblCardInGameValue.Text) - 2));
}else{
//falsch
intResultnOK = true;
((Label)this.Controls["lblPicBox" + arrintPicBoxNum[0]]).BackColor ¶
= Color.Red;
((Label)this.Controls["lblPicBox" + arrintPicBoxNum[1]]).BackColor ¶
= Color.Red;
}
arrintCompareCard[0] = -1;
lblCountValues.Text = Convert.ToString(Convert.ToInt16 ¶
(lblCountValues.Text) + 1);
if (lblCardInGameValue.Text == "0"){
MessageBox.Show("Herzlichen Glückwunsch.\nDu hast alle " + ¶
lblCountCardValue.Text + " Karten mit " + lblCountValues.Text + ¶
" Zügen aufgedeckt.",
"Gewonnen", MessageBoxButtons.OK);
}
}
}
}
}
private void Form1_SizeChanged(object sender, EventArgs e){
int intFormWidth = this.ClientSize.Width;
intFormWidth -= 240; //7*20 Pixel + 100 für Menü
intFormWidth = intFormWidth / 6;
int intFormHeight = this.ClientSize.Height;
intFormHeight -= 100; //5*20 Pixel
intFormHeight = intFormHeight / 4;
int intNewSizePicbox;
if (intFormHeight > intFormWidth){
intNewSizePicbox = intFormWidth;
}else{
intNewSizePicbox = intFormHeight;
}
int intXLocation = 0;
for (int i = 1; i <= 6; i++){
intXLocation = (i * 20) + ((i - 1) * intNewSizePicbox);
//ROW1
this.Controls["PicBox" + i].Size = new Size ¶
(intNewSizePicbox, intNewSizePicbox);
this.Controls["PicBox" + i].Location = new Point ¶
(intXLocation, 20);
this.Controls["lblPicBox" + i].Size = new Size ¶
(intNewSizePicbox + 10, intNewSizePicbox + 10);
this.Controls["lblPicBox" + i].Location = new Point ¶
(intXLocation - 5, 15);
//ROW2
this.Controls["PicBox" + (i + 6)].Size = new Size ¶
(intNewSizePicbox, intNewSizePicbox);
this.Controls["PicBox" + (i + 6)].Location = new Point ¶
(intXLocation, (40 + intNewSizePicbox));
this.Controls["lblPicBox" + (i + 6)].Size = new Size¶
(intNewSizePicbox + 10, intNewSizePicbox + 10);
this.Controls["lblPicBox" + (i + 6)].Location = new Point ¶
(intXLocation - 5, (35 + intNewSizePicbox));
//ROW3
this.Controls["PicBox" + (i + 12)].Size = new Size ¶
(intNewSizePicbox, intNewSizePicbox);
this.Controls["PicBox" + (i + 12)].Location = new Point ¶
(intXLocation, (60 + (2 * intNewSizePicbox)));
this.Controls["lblPicBox" + (i + 12)].Size = new Size ¶
(intNewSizePicbox + 10, intNewSizePicbox + 10);
this.Controls["lblPicBox" + (i + 12)].Location = new Point ¶
(intXLocation - 5, (55 + (2 * intNewSizePicbox)));
//ROW4
this.Controls["PicBox" + (i + 18)].Size = new Size ¶
(intNewSizePicbox, intNewSizePicbox);
this.Controls["PicBox" + (i + 18)].Location = new Point ¶
(intXLocation, (80 + (3 * intNewSizePicbox)));
this.Controls["lblPicBox" + (i + 18)].Size = new Size ¶
(intNewSizePicbox + 10, intNewSizePicbox + 10);
this.Controls["lblPicBox" + (i + 18)].Location = new Point ¶
(intXLocation - 5, (75 + (3 * intNewSizePicbox)));
}
//Menü Groupbox
MenüGroupBox.Location = new Point(140 + (6 * intNewSizePicbox), 20);
MenüGroupBox.Size = new Size(this.ClientSize.Width - (160 + ¶
(6 * intNewSizePicbox)), 60 + (4 * intNewSizePicbox));
//Button Reset
cmdReset.Size = new Size(MenüGroupBox.Width - 40, 50);
cmdReset.Location = new Point(20, MenüGroupBox.Height - 80);
//PicBoxLogo
PicBoxLogo.Size = new Size(MenüGroupBox.Width - 20, 140);
PicBoxLogo.Location = new Point(10, 20);
//Label Count Card
lblCountCard.Location = new Point(20, 180);
lblCountCardValue.Location = new Point(lblCountCard.Width + 20, 180);
//Label Card in Game
lblCardInGame.Location = new Point(20, 220);
lblCardInGameValue.Location = new Point(lblCardInGame.Width + 20, 220);
//Label Counts
lblCount.Location = new Point(20, 260);
lblCountValues.Location = new Point(lblCount.Width + 20, 260);
//lnkploesch
lnkploesch.Location = new Point(20, MenüGroupBox.Height - 20);
}
private void cmdReset_Click(object sender, EventArgs e){
Application.Restart();
Environment.Exit(0);
}
private void LoadPicFiles(object sender, EventArgs e){
if (!Directory.Exists(strFullPath)){
MessageBox.Show("Der Ordner " + strFullPath + " wurde nicht gefunden.¶
\nBitte Ordner erstellen und Memory-Bilder die zusammen gehören, ¶
im Format 1.jpg --> 1_1.jpg, 2.jpg --> 2_1.jpg,... ablegen. ");
Application.Exit();
}
if (File.Exists(strFullPath + @"\Game_Pics\hidden_card.jpg")){
for (int i = 1; i <= 24; i++){
((PictureBox)this.Controls["PicBox" + i]).Image = ¶
Image.FromFile(strFullPath + @"\Game_Pics\hidden_card.jpg");
}
}else{
MessageBox.Show("Datei " + strFullPath + @"\Game_Pics\hidden_card.jpg ¶
nicht vorhanden. Anwendung wird beendet.");
Application.Exit();
}
int intIndexFor = 0;
for (int i = 1; i <= 12; i++){
if ((File.Exists(strFullPath + @"\" + i + ".jpg")) && ¶
(File.Exists(strFullPath + @"\" + i + "_1.jpg"))){
this.Controls["PicBox" + (i + intIndexFor)].Visible = true;
intIndexFor++;
this.Controls["PicBox" + (i + intIndexFor)].Visible = true;
ListPicFiles.Add(i + ".jpg");
ListPicFiles.Add(i + "_1.jpg");
}else{
if (i <= 2){
MessageBox.Show("Keine oder zu wenig Bilder im Ordner ¶
" + strFullPath + " vorhanden");
Application.Exit();
}
break;
}
}
CreateRnd();
lblCardInGameValue.Text = Convert.ToString(ListPicFiles.Count);
lblCountCardValue.Text = Convert.ToString(ListPicFiles.Count);
}
private void CreateRnd(){
Random RndNums = new Random();
int intRndNums = 0;
int iDo = 0;
do{
intRndNums = RndNums.Next(0, ListPicFiles.Count);
if (!ListRndNums.Contains(intRndNums)){
iDo++;
ListRndNums.Add(intRndNums);
}
} while (iDo < ListPicFiles.Count);
}
private void lnkploesch_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
string target = "https://ploesch.de/index.php?side=g-diymemory";
System.Diagnostics.Process.Start(target);
}
}
}
Das Spielt wurde von uns selbst in der Programmiersprache c# erstellt und könnt Ihr direkt von unserer Cloud downloaden. Bei Interesse erhaltet Ihr auch auf Anfrage über unserer Kontaktformular den Quelltext zum Spiel.
Vor, während und nach dem Spielen, werden Daten mit unserem Server ausgetauscht. In unserer Datenschutzerklärung erhaltet Ihr hierzu weitere Informationen.