C#版2048---小圆脸图片版(游戏主界面)

本文详细介绍了如何在游戏主窗体中实现2048智能地图,包括初始化地图、绘制地图及游戏操作逻辑,通过设置不同图片对应不同分数,以及更新地图展示游戏状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

游戏主窗体如图片所示,右上角两个自定义按钮。标注的区域1,设计时为空白,在游戏开始时,创建4个包含4个pictureBox的list,即16个pictureBox。创建一个4*4的二维数组aMap[4,4],所有元素赋值为0,将此二维数组的每个元素都与每个list的pictureBox相对应,当aMap[x,y]的值分别为0,2,4,8…8192时让pictureBox设置不同的图片,然后游戏时每走一步都根据aMap[x,y]的值对不同的pictureBox设置图片。标准的区域2是5个label,左边一个显示2048,右边分别是两个label显示分数,两个label显示最高分。

初始化地图如下:

DirectoryInfo dir = new DirectoryInfo(Application.StartupPath).Parent;
        public string target;  
        List<PictureBox> list_1 = new List<PictureBox>();//4个含4个pictureBox的list来对应16个小格子
        List<PictureBox> list_2 = new List<PictureBox>();
        List<PictureBox> list_3 = new List<PictureBox>();
        List<PictureBox> list_4 = new List<PictureBox>();
        PictureBox pb01 = new PictureBox();
        PictureBox pb02 = new PictureBox();
        PictureBox pb03 = new PictureBox();
        PictureBox pb04 = new PictureBox();
        PictureBox pb05 = new PictureBox();
        PictureBox pb06 = new PictureBox();
        PictureBox pb07 = new PictureBox();
        PictureBox pb08 = new PictureBox();
        PictureBox pb09 = new PictureBox();
        PictureBox pb10 = new PictureBox();
        PictureBox pb11 = new PictureBox();
        PictureBox pb12 = new PictureBox();
        PictureBox pb13 = new PictureBox();
        PictureBox pb14 = new PictureBox();
        PictureBox pb15 = new PictureBox();
        PictureBox pb16 = new PictureBox();
 public void initialMap()
        {
            target = dir.FullName;
            list_1.AddRange(new[] { pb01, pb02, pb03, pb04 });
            int x=list_1.Count;
            for (int i = 0; i < list_1.Count; i++)
            {
                list_1[i].SizeMode = PictureBoxSizeMode.StretchImage;
                list_1[i].Size = new Size(100, 100);
                list_1[i].Location = new Point(30+i * 105, 155);
                list_1[i].Image = Image.FromFile(target + @"\Resources\0.jpg");
                this.Controls.Add(list_1[i]);
            }
            list_2.AddRange(new[] { pb05, pb06, pb07, pb08 });
            for (int i = 0; i < list_2.Count; i++)
            {
                list_2[i].SizeMode = PictureBoxSizeMode.StretchImage;
                list_2[i].Size = new Size(100, 100);
                list_2[i].Location = new Point(30+i * 105, 260);
                list_2[i].Image = Image.FromFile(target + @"\Resources\0.jpg");
                this.Controls.Add(list_2[i]);
            }
            list_3.AddRange(new[] { pb09, pb10, pb11, pb12 });
            for (int i = 0; i < list_3.Count; i++)
            {
                list_3[i].SizeMode = PictureBoxSizeMode.StretchImage;
                list_3[i].Size = new Size(100, 100);
                list_3[i].Location = new Point(30+i * 105, 365);
                list_3[i].Image = Image.FromFile(target + @"\Resources\0.jpg");
                this.Controls.Add(list_3[i]);
            }
            list_4.AddRange(new[] { pb13, pb14, pb15, pb16 });
            for (int i = 0; i < list_4.Count; i++)
            {
                list_4[i].SizeMode = PictureBoxSizeMode.StretchImage;
                list_4[i].Size = new Size(100, 100);
                list_4[i].Location = new Point(30+i * 105, 470);
                list_4[i].Image = Image.FromFile(target + @"\Resources\0.jpg");
                this.Controls.Add(list_4[i]);
            }

绘制地图:

public void drawMap()
        {
            target = dir.FullName; 
                   
            for (int i = 0; i < 4; i++)
            {
                switch (newGame.iMap[0, i])
                {
                    case 0:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\0.jpg");
                        break;
                    case 2:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\2.jpg");
                        break;
                    case 4:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\4.jpg");
                        break;
                    case 8:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\8.jpg");
                        break;
                    case 16:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\16.jpg");
                        break;
                    case 32:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\32.jpg");
                        break;
                    case 64:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\64.jpg");
                        break;
                    case 128:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\128.jpg");
                        break;
                    case 256:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\256.jpg");
                        break;
                    case 512:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\512.jpg");
                        break;
                    case 1024:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\1024.jpg");
                        break;
                    case 2048:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\2048.jpg");
                        break;
                    case 4096:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\4096.jpg");
                        break;
                    case 8192:
                        list_1[i].Image = Image.FromFile(target + @"\Resources\8192.jpg");
                        break;
                }
                switch (newGame.iMap[1, i])
                {
                    case 0:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\0.jpg");
                        break;
                    case 2:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\2.jpg");
                        break;
                    case 4:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\4.jpg");
                        break;
                    case 8:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\8.jpg");
                        break;
                    case 16:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\16.jpg");
                        break;
                    case 32:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\32.jpg");
                        break;
                    case 64:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\64.jpg");
                        break;
                    case 128:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\128.jpg");
                        break;
                    case 256:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\256.jpg");
                        break;
                    case 512:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\512.jpg");
                        break;
                    case 1024:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\1024.jpg");
                        break;
                    case 2048:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\2048.jpg");
                        break;
                    case 4096:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\4096.jpg");
                        break;
                    case 8192:
                        list_2[i].Image = Image.FromFile(target + @"\Resources\8192.jpg");
                        break;
                }
                switch (newGame.iMap[2, i])
                {
                    case 0:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\0.jpg");
                        break;
                    case 2:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\2.jpg");
                        break;
                    case 4:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\4.jpg");
                        break;
                    case 8:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\8.jpg");
                        break;
                    case 16:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\16.jpg");
                        break;
                    case 32:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\32.jpg");
                        break;
                    case 64:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\64.jpg");
                        break;
                    case 128:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\128.jpg");
                        break;
                    case 256:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\256.jpg");
                        break;
                    case 512:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\512.jpg");
                        break;
                    case 1024:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\1024.jpg");
                        break;
                    case 2048:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\2048.jpg");
                        break;
                    case 4096:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\4096.jpg");
                        break;
                    case 8192:
                        list_3[i].Image = Image.FromFile(target + @"\Resources\8192.jpg");
                        break;
                }
                switch (newGame.iMap[3, i])
                {
                    case 0:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\0.jpg");
                        break;
                    case 2:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\2.jpg");
                        break;
                    case 4:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\4.jpg");
                        break;
                    case 8:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\8.jpg");
                        break;
                    case 16:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\16.jpg");
                        break;
                    case 32:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\32.jpg");
                        break;
                    case 64:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\64.jpg");
                        break;
                    case 128:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\128.jpg");
                        break;
                    case 256:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\256.jpg");
                        break;
                    case 512:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\512.jpg");
                        break;
                    case 1024:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\1024.jpg");
                        break;
                    case 2048:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\2048.jpg");
                        break;
                    case 4096:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\4096.jpg");
                        break;
                    case 8192:
                        list_4[i].Image = Image.FromFile(target + @"\Resources\8192.jpg");
                        break;
                }
            }
        }

游戏操作:

private void MainForm_KeyUp(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Up:
                    newGame.MoveUp();
                    break;
                case Keys.Down:
                    newGame.MoveDown();
                    break;
                case Keys.Left:
                    newGame.MoveLeft();
                    break;
                case Keys.Right:
                    newGame.MoveRight();                    
                    break;
            }
            drawMap();
            strGrade = "";
            strGrade+=newGame.grade;
            laScore.Text = strGrade;
            if (newGame.grade > iBestGrade)
            {
                iBestGrade = newGame.grade;
                laBestScore.Text = "";
                laBestScore.Text += iBestGrade;
                newBestGrade = true;
            }           
        }







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值