我写的一个猜字游戏(好玩轻松)有难易度选择。请大家一起分享,要源代码的只要告书我E-Mail

lgqTiger 2004-01-02 10:09:38
static void Main()
{
Application.Run(new MainBoard());
}
//手工制作一个获取随机数方法
private void GenerateRandomSequence()
{
//声明以有数组的一个实例,并指定数组的维数
randomSeq=new byte[4];
Random rndGen=new Random();
int rndNum;
//将随机数填写到数组中
for (int i=0;i<4;i++)
{
do//第二层的循环,确保得到不同的数字
{
rndNum=rndGen.Next(10);
}
while (Array.IndexOf(randomSeq,(byte)rndNum)>-1);
//将数字填写到数组中
randomSeq[i]=(byte)rndNum;
}
}

//手工制作一个刷新新游戏的方法
private void RestartGame()
{
//获取随机数
GenerateRandomSequence();
//确定游戏的难度
ND=new int() ;
if (munND1.Checked)
{
ND=1;
statBar.Panels[0].Text="当前难度为:[简单]";
}
else if (munND2.Checked)
{
ND=2;
statBar.Panels[0].Text="当前难度为:[较难]";
}
else
{
ND=3;
statBar.Panels[0].Text="当前难度为:[极难]";
}
//清除纪录
lvwResults.Items.Clear();
lblAttempts.Text="0 次";
txtPlayerSeq.Text="";
txtPlayerSeq.Focus();
}

//手工建立一个比较玩家数字和秘密数字的逻辑的方法。
private void ProcessPlayerInput()
{
//验证玩家的数字是否是一组4位不从复的数字
if (CheckInputValidity()==false)
return;
string result="";
byte[] playerSeq=GetPlayerSequence();

for(int i=0;i<4;i++)
{
if (ND==1)
{
//如果同一位置上的数字是完全相同时返回“★”号
if (playerSeq[i]==randomSeq[i])
result+="★";
//如果同一位置上的数字不相同但是玩家的数字在秘密数字中存在时返回“☆”号
else if(Array.IndexOf(randomSeq,playerSeq[i])>-1)
result+="☆";
else if (playerSeq[i] !=randomSeq[i])
result+="№";
}
else if (ND==2)
{
//如果同一位置上的数字是完全相同时返回“★”号
if (playerSeq[i]==randomSeq[i])
result+="★";
//如果同一位置上的数字不相同但是玩家的数字在秘密数字中存在时返回“☆”号
else if(Array.IndexOf(randomSeq,playerSeq[i])>-1)
result+="☆";
}
else
{
//如果同一位置上的数字是完全相同时返回“★”号
if (playerSeq[i]==randomSeq[i])
result+="★";
}
}
//当玩家完全猜中时
if (result=="★★★★")
{
MessageBox.Show("你成功了!!!\n\n...在"+
(lvwResults.Items.Count+1).ToString()+"的次数中猜中了",
"恭喜!你好棒啊",
MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
//RestartGame();
}
else
{
AddResultItem(txtPlayerSeq.Text,result);
txtPlayerSeq.Text="";
txtPlayerSeq.Focus();
}

}

//手工添加一个返回玩家输入的数字的数组的方法
//该方法返回的是一个数组
private byte[] GetPlayerSequence()
{
byte[] playerSeq=new byte[4];
playerSeq[0]=byte.Parse(txtPlayerSeq.Text[0].ToString());
playerSeq[1]=byte.Parse(txtPlayerSeq.Text[1].ToString());
playerSeq[2]=byte.Parse(txtPlayerSeq.Text[2].ToString());
playerSeq[3]=byte.Parse(txtPlayerSeq.Text[3].ToString());
//方法返回一个数组
return playerSeq;
}
//手工添加一个返回(真、假)值的方法
//该方法是检查玩家输入的数字是否存在从复
private bool CheckInputValidity()
{
//当玩家输入的数字的位数小于4时提示出错
if (txtPlayerSeq.Text.Length<4)
{
MessageBox.Show("请输入一个4为数的数字!",
"哎哟!你输入有问题呢",MessageBoxButtons.OK,MessageBoxIcon.Error);
return false;
}
byte[] playerSeq=GetPlayerSequence();
if (playerSeq[0]==playerSeq[1]||playerSeq[0]==playerSeq[2]||
playerSeq[0]==playerSeq[3]||playerSeq[1]==playerSeq[2]||
playerSeq[1]==playerSeq[3]||playerSeq[2]==playerSeq[3])
{
MessageBox.Show("你输入的数字又从复,请检查!","哎哟!你输入有问题呢",
MessageBoxButtons.OK,MessageBoxIcon.Error);
return false;
}
return true;
}

//手工添加一个填充返回框内容的方法
private void AddResultItem(string input,string result)
{
ListViewItem li=new ListViewItem(new string[]{input,result});
lvwResults.Items.Add(li);
li.Selected=true;
li.EnsureVisible();
lblAttempts.Text=lvwResults.Items.Count.ToString()+'次';
}

private void MainBoard_Load(object sender, System.EventArgs e)
{
RestartGame();
}

private void btnTry_Click(object sender, System.EventArgs e)
{
ProcessPlayerInput();
}

private void txtPlayerSeq_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if ((e.KeyChar>='0' && e.KeyChar<='9')||
e.KeyChar==(char)((int)Keys.Back))
e.Handled=false;
else
e.Handled=true;
if(e.KeyChar==(char)((int)Keys.Enter))
ProcessPlayerInput();
}

private void mnuRestart_Click(object sender, System.EventArgs e)
{
//显示提示
DialogResult ret=MessageBox.Show(
"你确定要从新开始游戏吗?","从新开始[猜字游戏]",
MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if (ret==DialogResult.Yes)
RestartGame();
}

private void mnuClose_Click(object sender, System.EventArgs e)
{
Close();
}

private void munND1_Click(object sender, System.EventArgs e)
{
munND1.Checked=true;
munND2.Checked=false;
munND3.Checked=false;
RestartGame();
}

private void munND2_Click(object sender, System.EventArgs e)
{
munND1.Checked=false;
munND2.Checked=true;
munND3.Checked=false;
RestartGame();
}

private void munND3_Click(object sender, System.EventArgs e)
{
munND1.Checked=false;
munND2.Checked=false;
munND3.Checked=true;
RestartGame();

}

private void munAbstention_Click(object sender, System.EventArgs e)
{
string Seq="";
for (int i=0;i<4;i++)
{
Seq=Seq+randomSeq[i].ToString();
}
MessageBox.Show("哈哈!!你投降啦?\n\n正确的数字是:["+
Seq
+"] \n\n不要气累,再接再厉哦!",
"哈哈!你你放弃啦?",
MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
RestartGame();
}

private void mnuAbout_Click(object sender, System.EventArgs e)
{
About aboutForm=new About();
aboutForm.ShowDialog();
}
}
}
...全文
1063 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ktaka 2004-01-02
  • 打赏
  • 举报
回复
帮顶一下
tyochen 2004-01-02
  • 打赏
  • 举报
回复
tyochen@163.com
谢谢!
musicllm 2004-01-02
  • 打赏
  • 举报
回复
我的ftp吧
ftp://musicllm.meibu.com/share
yhjiu99 2004-01-02
  • 打赏
  • 举报
回复
yhjiu99@163.com
谢谢!
zhushoujing 2004-01-02
  • 打赏
  • 举报
回复
zhusj@126.com
谢谢。
xiaozhangdewo 2004-01-02
  • 打赏
  • 举报
回复
long_wang_2001@163.com
人少,都玩传奇去了,哈\^
angxain 2004-01-02
  • 打赏
  • 举报
回复
zxlovelt@163.com
我也帮你顶先
Anota 2004-01-02
  • 打赏
  • 举报
回复
fangheling@hotmail.com
顶你

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧