오늘은 Windows Forms를 이용하여
수학 퀴즈 앱을 만들어 보았다.
참고 공식 문서는
를 참고 했다.
+++
실행 이미지
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MatchingGame
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
AssignIconsToSquares();
}
Label firstClicked = null;
Label secondClicked = null;
Random random = new Random();
List<string> icons = new List<string>()
{
"A", "A", "B", "B", "C", "C", "D", "D",
"E", "E", "F", "F", "G", "G", "H", "H"
};
private void AssignIconsToSquares() // 문자 할당 메서드
{
foreach (Control control in tableLayoutPanel1.Controls)
{
Label iconLabel = control as Label;
if (iconLabel != null)
{
int randomNumber = random.Next(icons.Count);
iconLabel.Text = icons[randomNumber];
iconLabel.ForeColor = iconLabel.BackColor;
icons.RemoveAt(randomNumber);
}
}
}
private void label1_Click(object sender, EventArgs e) // Label 클릭 메서드
{
if (timer1.Enabled == true)
return;
Label clickedLabel = sender as Label;
if (clickedLabel != null)
{
if (clickedLabel.ForeColor == Color.Black)
return;
if (firstClicked == null)
{
firstClicked = clickedLabel;
firstClicked.ForeColor = Color.Black;
return;
}
secondClicked = clickedLabel;
secondClicked.ForeColor = Color.Black;
CheckForWinner();
if (firstClicked.Text == secondClicked.Text)
{
firstClicked = null;
secondClicked = null;
return;
}
timer1.Start(); // 첫번째, 두번째가 같지 않다면 타이머 시작
}
}
private void timer1_Tick(object sender, EventArgs e) // 틀렸을경우 다시 되돌리기 (1 간격마다 실행되는 메서드)
{
timer1.Stop();
firstClicked.ForeColor = firstClicked.BackColor;
secondClicked.ForeColor = secondClicked.BackColor;
firstClicked = null;
secondClicked = null;
}
private void CheckForWinner() // 두 레이블이 같다면 축하 메세지 출력
{
foreach (Control control in tableLayoutPanel1.Controls)
{
Label iconLabel = control as Label;
if (iconLabel != null)
{
if (iconLabel.ForeColor == iconLabel.BackColor)
return;
}
}
MessageBox.Show("모든 문자를 맞췄습니다!", "축하합니다!");
Close();
}
}
}
실행 코드