汉字英雄游戏项目(C#为例)思路建议

项目要求

       设计一个小游戏,游戏以认识汉字并写出拼音为主题,要求 (该软件至少包含以下功能,
多者不限):
1 、游戏应该支持不同用户的使用,能够将用户信息及得分以文件形式保存。
2 、软件可以读取汉字字库文件(可以在网上找,或者自己做一个,只要包括部分汉字及
拼音即可),并实现随机抽取一个汉字显示在游戏界面上。
3 、游戏界面上以图片形式显示 26 个字母( 26 个图片,类似扑克牌),支持鼠标对图片
的拖动。
4 、支持用户将字母分别拖动到指定区域组成答案并提交,游戏可以根据用户提交的图片
判断拼音是否正确。
5 、支持比赛成绩统计。
6 、可以参考网络中类似软件。

项目需求分析与个人建议: (仅为建议,请有意者选择性听取)

(简单游戏项目,不劳一定没有干货,加油)

思路千万条,不要让外人左右自己的想法,敢想咱也得敢干。

从题设可见,文章所列内容有以下几个关键点:

1、注册登录(网上教程多此处不提了)

2、游戏本体:自己规划和设计提高能力的关键步骤;难点主要有:图片的拖动,图片接受框(建议做出类似吸附的效果)。本人所制如下:

3、结束部分(成绩统计和其他功能模块),自主万岁。

简单划分三部分后,接着介绍难点:

       具体来说,难点在于图片的拖动和图片接受框的制作,其中拖动方式样式较多,主要用坐标的变化来实现拖动,可利用(1)mouseup+mousemove+mousedown(如下)的组合完成拖拽的实现,也可将其附在click事件上,点击后即可移动图片(此过程中可根据26字母图片的共性实现总工作量的缩减)。

   对于图片接受框,可以只是一个图片提供坐标,也可制作一个图片吸附的功能,具体就是将图片的定位点到达某个位置范围内即令其坐标直接等同于图片接受框,并将字母图片所代表的内容存到答案中。

        private void q_MouseMove(object sender, MouseEventArgs e)
        {
            if (down == true)
            {
                q.Left += Convert.ToInt16(e.X - xPos);
                q.Top += Convert.ToInt16(e.Y - yPos);
            }
            //移动中
        }

        private void q_MouseUp(object sender, MouseEventArgs e)
        {
            down = false;
            if (q.Left >= pic1.Left - 10 && q.Top >= pic1.Top - 10 &&
                q.Right <= pic1.Right + 10 && q.Bottom <= pic1.Bottom + 10)
            {
                pin1.Text = "q";
                da[0] = pin1.Text;  
            }
            else if (q.Left >= pic2.Left - 10 && q.Top >= pic2.Top - 10 &&
                q.Right <= pic2.Right + 10 && q.Bottom <= pic2.Bottom + 10)
            {
                pin2.Text = "q";
                da[1] = pin2.Text;
            }
            else if (q.Left >= pic3.Left - 10 && q.Top >= pic3.Top - 10 &&
                q.Right <= pic3.Right + 10 && q.Bottom <= pic3.Bottom + 10)
            {
                pin3.Text = "q";
                da[2] = pin3.Text;
            }
            else if (q.Left >= pic4.Left - 10 && q.Top >= pic4.Top - 10 &&
                q.Right <= pic4.Right + 10 && q.Bottom <= pic4.Bottom + 10)
            {
                pin4.Text = "q";
                da[3] = pin4.Text;
            }
            else if (q.Left >= pic5.Left - 10 && q.Top >= pic5.Top - 10 &&
                q.Right <= pic5.Right + 10 && q.Bottom <= pic5.Bottom + 10)
            {
                pin5.Text = "q";
                da[4] = pin6.Text;
            }
            else if (q.Left >= pic6.Left - 10 && q.Top >= pic6.Top - 10 &&
                q.Right <= pic6.Right + 10 && q.Bottom <= pic6.Bottom + 10)
            {
                pin6.Text = "q";
                da[5] = pin6.Text;
            }
            q.Left = Convert.ToInt16(x0);
            q.Top = Convert.ToInt16(y0);
        }

        private void q_MouseDown(object sender, MouseEventArgs e)
        {
            down = true;
            q = (PictureBox)sender;//获取准确坐标
            xPos = e.X;//设置鼠标坐标,移动用
            yPos = e.Y;
            x0 = q.Left;y0 = q.Top;//设置初始坐标,回到初始位置用
        }

       对于字库:字库文件可以自制一个比较简单的,以分隔符的方式将其存到文本文档中即可,在抽题读取时用分隔符的方式将题目各部分存在数组中进行读取,也可从网上下载,只要自己能懂一切都不是问题,自己思考后能懂即可。

       对于抽题部分,我们生成一个随机数并根据所用字库文件中的题量限制随即数的范围,一个arrylist就可以解决存储问题,再加上分隔符即可实现抽题。

       答案部分可由拼音和音标构成,以字库文件的选择为依据,将答案与所选题对比进行作答的正误判断,也可有自己的创新,无论是以验证的方式还是提交后自动跳转下一题的方式,均可对需求进行完善和解决,同时依据需求,对所选的成绩可进行统计,以多种形式对作品进行完善,以求更加完美。各种功能的附加等也应依据游戏本体等进行添加和完善。

       对于答案组成,个人可以凭借自己的想法进行,对于过程中所出现的各种情况,我们均可对其进行分类和整理,存到成绩内,能够查看处理好细节即可。

       项目的过程是需要自己思索的,估计作此项目也只会出现在大一阶段,这是一个提升自己能力的好机会,思路如上仅供参考,希望能有帮助。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值