using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace PuzzlePlayer_Namespace { enum BJSTATE // the different states the game can be in { Setup, // choose how much money the player deploys Game, // play the game Result, // see te result and then restart } internal class BlackJack : Form { BJSTATE state; int money = 1000; int deploydMoney = 0; const string DIR = @"..\..\..\Resources\BlackJack\"; FontFamily BJFont = FontFamily.GenericSansSerif; Size screen = Screen.PrimaryScreen.WorkingArea.Size; Panel DefaultPanel; // always visible Panel SetupPanel; // visibility depends on game state Panel GamePanel; Panel ResultPanel; (int,string,Color)[] chipInfo = { (5,"5",Color.Gray), (25, "25", Color.Blue), (50, "50", Color.Green), (100, "100", Color.DarkCyan), (500, "500", Color.Purple), (1000, "1K", Color.Red), (5000, "5K", Color.Orange), (10000, "10K", Color.Gold) }; public object Int { get; private set; } public BlackJack() { state = BJSTATE.Setup; WindowState = FormWindowState.Maximized; BackColor = Color.DarkGreen; Paint += BlackJack_Paint; SetupUI(); } private void SetupUI() { //Default DefaultPanel = new Panel(); DefaultPanel.Size = new Size(screen.Width/2,screen.Height); DefaultPanel.Location = new Point(screen.Width / 4, 0); //DefaultPanel.BackColor = Color.Blue; //DEBUG int goofyIndex = 0; //dw for(int j = 1; j <= 2; j++) for(int i = 0; i < 4; i++) { Button b = new Button(); b.Size = new Size(DefaultPanel.Width / 4, DefaultPanel.Height / 5); b.Location = new Point(i * b.Size.Width, DefaultPanel.Height - b.Size.Height*j); b.Name = goofyIndex.ToString(); // for getting the index for chipInfo later (int, string, Color) chip = chipInfo[goofyIndex]; b.Text = chip.Item2; b.BackColor = chip.Item3; b.Font = new Font(BJFont, b.Size.Width / 5); b.Click += moneyButtonClick; DefaultPanel.Controls.Add(b); goofyIndex++; } Controls.Add(DefaultPanel); //Setup SetupPanel = new Panel(); //Game GamePanel = new Panel(); //Result ResultPanel = new Panel(); } private void moneyButtonClick(object sender, EventArgs e) { Button b = (Button) sender; (int, string, Color) chip = chipInfo[int.Parse(b.Name)]; if(money > chip.Item1) { //bababababa } } private void BlackJack_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; //default draw Font moneyFont = new Font(BJFont, screen.Width/50, FontStyle.Bold); g.DrawString("Money: " + money.ToString(), moneyFont, Brushes.Black, new PointF(0,0)); switch(state) // paint according to the current state { case BJSTATE.Setup: Setup_Paint(g); break; case BJSTATE.Game: Game_Paint(g); break; case BJSTATE.Result: Result_Paint(g); break; } } private void Setup_Paint(Graphics g) { } private void Game_Paint(Graphics g) { } private void Result_Paint(Graphics g) { } private void DrawChip(Graphics g, Color c, int r, Point pos, string value) { // Chip Brush brush = new SolidBrush(c); g.FillEllipse(brush, pos.X - r, pos.Y - r, r * 2, r * 2); // White Squares int squareSize = r / 2; Rectangle rect = new Rectangle(pos.X - squareSize/2, pos.Y - r, squareSize, squareSize); g.FillRectangle(Brushes.White, rect); rect.Offset(new Point(0, r*2-squareSize)); g.FillRectangle(Brushes.White, rect); rect = new Rectangle(pos.X - r, pos.Y - squareSize/2, squareSize, squareSize); g.FillRectangle(Brushes.White, rect); rect.Offset(new Point(r * 2 - squareSize, 0)); g.FillRectangle(Brushes.White, rect); //text Font f = new Font(BJFont, r/2); SizeF fontSize = g.MeasureString(value.ToString(), f); g.DrawString(value.ToString(), f, Brushes.Black, new PointF(pos.X-fontSize.Width/2, pos.Y-fontSize.Height/2)); } private void DrawCard(Graphics g, Point pos, int width, string cardName) //cardName needs to be in format: num_of_kind { Image img = Image.FromFile(DIR + "cards/" + cardName + ".png"); //img is 500x726 g.DrawImage(img, pos.X,pos.Y,width, (float)(width*1.4)); } } }