c#大一三级项目汉字英雄

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

帮你写了一部分,这是转换拼音的,满意采纳后,可以继续帮你写完。

static void Main(string[] args)
        {

            Console.WriteLine(GetSpellCode("汉字")) ;
            Console.ReadKey();
        }

        /// <summary>

        /// 在指定的字符串列表CnStr中检索符合拼音索引字符串

        /// </summary>

        /// <param name="CnStr">汉字字符串</param>

        /// <returns>相对应的汉语拼音首字母串</returns>

        public static string GetSpellCode(string CnStr)
        {

            string strTemp = "";

            int iLen = CnStr.Length;

            int i = 0;

            for (i = 0; i <= iLen - 1; i++)
            {

                strTemp += GetCharSpellCode(CnStr.Substring(i, 1));

            }

            return strTemp;

        }

        /// <summary>
        /// 得到一个汉字的拼音第一个字母,如果是一个英文字母则直接返回大写字母
        /// </summary>
        /// <param name="CnChar">单个汉字</param>
        /// <returns>单个大写字母</returns>

        private static string GetCharSpellCode(string CnChar)
        {

            long iCnChar;

            byte[] ZW = System.Text.Encoding.Default.GetBytes(CnChar);

            //如果是字母,则直接返回

            if (ZW.Length == 1)
            {

                return CnChar.ToUpper();

            }

            else
            {

                // get the array of byte from the single char

                int i1 = (short)(ZW[0]);

                int i2 = (short)(ZW[1]);

                iCnChar = i1 * 256 + i2;

            }

            // iCnChar match the constant

            if ((iCnChar >= 45217) && (iCnChar <= 45252))
            {

                return "A";

            }

            else if ((iCnChar >= 45253) && (iCnChar <= 45760))
            {

                return "B";

            }
            else if ((iCnChar >= 45761) && (iCnChar <= 46317))
            {

                return "C";

            }
            else if ((iCnChar >= 46318) && (iCnChar <= 46825))
            {

                return "D";

            }
            else if ((iCnChar >= 46826) && (iCnChar <= 47009))
            {

                return "E";

            }
            else if ((iCnChar >= 47010) && (iCnChar <= 47296))
            {

                return "F";

            }
            else if ((iCnChar >= 47297) && (iCnChar <= 47613))
            {

                return "G";

            }
            else if ((iCnChar >= 47614) && (iCnChar <= 48118))
            {

                return "H";

            }
            else if ((iCnChar >= 48119) && (iCnChar <= 49061))
            {

                return "J";

            }
            else if ((iCnChar >= 49062) && (iCnChar <= 49323))
            {

                return "K";

            }
            else if ((iCnChar >= 49324) && (iCnChar <= 49895))
            {

                return "L";

            }
            else if ((iCnChar >= 49896) && (iCnChar <= 50370))
            {

                return "M";

            }
            else if ((iCnChar >= 50371) && (iCnChar <= 50613))
            {

                return "N";

            }
            else if ((iCnChar >= 50614) && (iCnChar <= 50621))
            {

                return "O";

            }
            else if ((iCnChar >= 50622) && (iCnChar <= 50905))
            {

                return "P";

            }
            else if ((iCnChar >= 50906) && (iCnChar <= 51386))
            {

                return "Q";

            }
            else if ((iCnChar >= 51387) && (iCnChar <= 51445))
            {

                return "R";

            }
            else if ((iCnChar >= 51446) && (iCnChar <= 52217))
            {

                return "S";

            }
            else if ((iCnChar >= 52218) && (iCnChar <= 52697))
            {

                return "T";

            }
            else if ((iCnChar >= 52698) && (iCnChar <= 52979))
            {

                return "W";

            }
            else if ((iCnChar >= 52980) && (iCnChar <= 53640))
            {

                return "X";

            }
            else if ((iCnChar >= 53689) && (iCnChar <= 54480))
            {

                return "Y";

            }
            else if ((iCnChar >= 54481) && (iCnChar <= 55289))
            {

                return "Z";

            }
            else

                return ("?");

        }

第一个问题: 设计一个用户表保存用户基本信息。包括得分。 这个可以用数据库比较理想。
第二个问题:设计一个汉字字库保存预设定汉字即拼音,建议用数据库的方式。
第三个问题:需要GDI+相关知识,设计26个字母表读取保存,备用。
第四个问题:需要GDI+相关知识,设计一个区域保存字母表顺序(即对应正确拼音顺序)。拖动即判断鼠标对应字母表图片位置。(比较麻烦)
第五个问题:由于前面第一个问题使用的是数据库,这里直接统计一下即可。

26个字母+4个音调图形集合

public List<Bitmap> bitmapArray = new List<Bitmap>();

public Bitmap InitializationChar(string letter)
        {
            Bitmap bmp = new Bitmap(50, 50);
            Graphics g = Graphics.FromImage(bmp);
            g.FillRectangle(Brushes.Green, new Rectangle(0, 0, 45, 45));
            g.DrawString(letter, new Font("Arial", 30, FontStyle.Bold), Brushes.White, new Point(0, -2));

            return bmp;
        }


public void StartBitmapList()
{
    string letterTable = "abcdefghijklmnopqrstuvwxyzˉˊˇˋ";
        for (int a = 0; a < letterTable.Length; a++)
        {
            bitmapArray.Add(InitializationChar(letterTable[a].ToString()));
            id++;
        }
}

参考:https://www.cnblogs.com/sansui/p/9912459.html