仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 650|回复: 8
打印 上一主题 下一主题

[学习教程] 来一篇关于NET的兴趣编程:C#扫雷代码

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:26:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。usingSystem;
usingSystem.Drawing;
usingSystem.Windows.Forms;
namespaceWindowsFormsApplication1
{
publicpartialclassFrm1:Form
{
#region变量
publicintqishu;
publicstaticintls=20,hs=11;
publicintlgs=30;//列数,行数。
publicintbl=0;//是不是从头布雷
publicinttime;
publicint[,]bulei=newint[ls,hs];//bulei数组的值0代表无雷,1-8代表雷的个数,9代表雷
publicintceshi=0;
publicint[,]click=newint[ls,hs];//10暗示要扫除既是单击的11暗示右击一次,12暗示右击两次16暗示以扫除过了
publicintsum=0;
publicinttimerEnable=0;//游戏所处的形态0是游戏中
#endregion
publicFrm1()
{
InitializeComponent();
}
///
///标识雷的个数和可插的旗数
///
publicvoidQishu()
{
if(qishu<=lgs)
{
gamesource.Text="00"+(lgs-qishu)。ToString();
}
else
{
gamesource.Text="00"+(lgs-qishu)。ToString();
}
}
///
///画方格
///
///<实例工具>
///<要绘图的地位>
///<要绘图的地位>
///<绘图利用的色彩>
publicvoidDline(Graphicsdline,intmx1,intmy1,Penmypen)
{
dline.DrawLine(mypen,mx1,my1,mx1+20,my1);
dline.DrawLine(mypen,mx1,my1,mx1,my1+20);
dline.DrawLine(newPen(Color.Black),mx1+20,my1,mx1+20,my1+20);
dline.DrawLine(newPen(Color.Black),mx1,my1+20,mx1+20,my1+20);
}
///
///看是不是能够向四周挪动
///
///<挪动的基础X坐标>
///<挪动的基础Y坐标>
publicvoidPanjie(intx,inty)
{
Pl(x,y);
if(y-1>=0)
{
Pl(x,y-1);
if(x-1>=0)
{
Pl(x-1,y-1);
}
if(x+1
{
Pl(x+1,y-1);
}
}
if(y+1<hs)
{
Pl(x,y+1);
if(x-1>=0)
{
Pl(x-1,y+1);
}
if(x+1<ls)
{
Pl(x+1,y+1);
}
}
if(x-1>=0)
{
Pl(x-1,y);
}
if(x+1<ls)
{
Pl(x+1,y);
}
}
///
///判别是不是要清扫除
///
///<要判别的基础X坐标>
///<要判别的基础Y坐标>
publicvoidPl(intx,inty)
{
if(bulei[x,y]==0&&click[x,y]!=10&&click[x,y]!=11&&click[x,y]!=16)
{
click[x,y]=10;
Panjie(x,y);
}
if(bulei[x,y]>0&&bulei[x,y]<9&&click[x,y]!=10&&click[x,y]!=11&&click[x,y]!=16)
{
click[x,y]=10;
}
}
///
///初始化数组,布雷,判别四周的雷数
///
publicvoidBlpl()
{
sum=ls*hs;
qishu=0;
intmx,my;
//初始化数组9暗示雷数
intmx1,my1;
intsum1=0;
for(mx=0;mx<ls;mx++)
{
for(my=0;my
{
bulei[mx,my]=0;
click[mx,my]=0;
}
}
while(sum1
//决意雷的个数和雷德地位
{
sum1=0;
Randomr=newRandom((int)DateTime.Now.Ticks);
mx=r.Next(ls-1);
my=r.Next(hs-1);
bulei[mx,my]=9;
for(mx1=0;mx1<ls;mx1++)
{
for(my1=0;my1<hs;my1++)
{
sum1+=bulei[mx1,my1];
}
}
}
//判别四周雷的个数
for(mx=0;mx<ls;mx++)
{
for(my=0;my<hs;my++)
{
if(bulei[mx,my]!=9)
{
if(mx-1>=0)
{
if(bulei[mx-1,my]==9)
{
bulei[mx,my]++;
}
if(my-1>=0&&bulei[mx-1,my-1]==9)
{
bulei[mx,my]++;
}
if(my+1<hs&&bulei[mx-1,my+1]==9)
{
bulei[mx,my]++;
}
}
if(mx+1
{
if(bulei[mx+1,my]==9)
{
bulei[mx,my]++;
}
if(my-1>=0&&bulei[mx+1,my-1]==9)
{
bulei[mx,my]++;
}
if(my+1<hs&&bulei[mx+1,my+1]==9)
{
bulei[mx,my]++;
}
}
if(my-1>=0&&bulei[mx,my-1]==9)
{
bulei[mx,my]++;
}
if(my+1
{
bulei[mx,my]++;
}
}
}
}
}
///
///右击的重绘
///
///>
publicvoidRdraw(Graphicsdline)
{
stringtext;
intmx,my;
intmx1,my1;
for(mx=0;mx<ls;mx++)
{
for(my=0;my<hs;my++)
{
mx1=mx*2+mx*20+4;
my1=my*2+my*20+4;
if(click[mx,my]==11)
{
//第一次右击画旗
dline.DrawLine(newPen(Color.White),mx1,my1,mx1+20,my1+20);
dline.DrawLine(newPen(Color.White),mx1,my1,mx1,my1+20);
dline.DrawLine(newPen(Color.Black),mx1+20,my1,mx1+20,my1+20);
dline.DrawLine(newPen(Color.Black),mx1,my1+20,mx1+20,my1+20);
dline.FillRectangle(newSolidBrush(Color.FromArgb(224,224,224)),mx1+1,my1+1,18,18);
text="P";
dline.DrawString(text,newFont("宋体",15),newSolidBrush(Color.Red),mx1+2,my1+2);
}
if(click[mx,my]==12)
{
//第二次右击画问号
dline.DrawLine(newPen(Color.White),mx1,my1,mx1+20,my1+20);
dline.DrawLine(newPen(Color.White),mx1,my1,mx1,my1+20);
dline.DrawLine(newPen(Color.Black),mx1+20,my1,mx1+20,my1+20);
dline.DrawLine(newPen(Color.Black),mx1,my1+20,mx1+20,my1+20);
dline.FillRectangle(newSolidBrush(Color.FromArgb(224,224,224)),mx1+1,my1+1,18,18);
text="?";
dline.DrawString(text,newFont("宋体",15),newSolidBrush(Color.Black),mx1+2,my1+2);
}
if(click[mx,my]==13)
{
//第三次右击恢回复样
click[mx,my]=2;
dline.DrawLine(newPen(Color.White),mx1,my1,mx1+20,my1+20);
dline.DrawLine(newPen(Color.White),mx1,my1,mx1,my1+20);
dline.DrawLine(newPen(Color.Black),mx1+20,my1,mx1+20,my1+20);
dline.DrawLine(newPen(Color.Black),mx1,my1+20,mx1+20,my1+20);
dline.FillRectangle(newSolidBrush(Color.FromArgb(224,224,224)),mx1+1,my1+1,18,18);
}
}
}
}
///
///初始化屏幕(包还一切的)
///
publicvoidStartscr()
{
Graphicsdline=labdraw.CreateGraphics();
time=0;
Blpl();
timer1.Enabled=false;
Colorc=Color.FromArgb(224,224,224);
labdraw.CreateGraphics()。Clear(c);
Drawscreen(dline);
timerEnable=0;
labtime.Text=("000");
}
///
///画界面
///
///>
publicvoidDrawscreen(Graphicsdline)
{
sum=0;//失掉没分明的格子数
intmx,my;
intmx1=0,my1=0;//失掉要绘图的坐标
stringtext;
for(mx=0;mx<ls;mx++)
{
for(my=0;my<hs;my++)
{
//绘图位置置mx,my分离是屏幕x,y轴
mx1=mx*2+mx*20+4;
my1=my*2+my*20+4;
if(click[mx,my]!=10&&click[mx,my]!=12&&click[mx,my]!=16&&click[mx,my]!=15)
{
//上面用于画平面形矩形;
sum++;
Penmypen=newPen(Color.Gray);
Dline(dline,mx1,my1,mypen);
dline.FillRectangle(newSolidBrush(Color.FromArgb(224,224,224)),mx1+1,my1+1,18,18);
}
if((click[mx,my]==10||click[mx,my]==16))
{
click[mx,my]=16;//扫除的格子
//提醒四周的雷数
if(bulei[mx,my]<=8&&bulei[mx,my]>0)
{
text=bulei[mx,my].ToString();
dline.DrawString(text,newFont("宋体",15),newSolidBrush(Color.Black),mx1+2,my1+2);
}
//显现雷
if((bulei[mx,my]==9||bulei[mx,my]==100))
{
text="*";
dline.DrawString(text,newFont("宋体",15),newSolidBrush(Color.Black),mx1+2,my1+2);
if(bulei[mx,my]==100)
{
//被单击的雷上画上叉号
dline.DrawLine(newPen(Color.Red),mx1,my1,mx1+20,my1+20);
dline.DrawLine(newPen(Color.Red),mx1,my1+20,mx1+20,my1);
}
}
}
}
//用于画旗和问号
Rdraw(dline);
}
}
///
///当为雷时的算法
///
///>
///>
publicvoidPanlei(intx,inty)
{
if(bulei[x,y]!=0)
{
if(bulei[x,y]==9)
{
timer1.Enabled=false;//使计时器中断
timerEnable=1;//使游戏出游停止形态
bulei[x,y]=100;
inti,j;
for(i=0;i<ls;i++)
{
for(j=0;j<hs;j++)
{
if(bulei[i,j]==9||bulei[i,j]==100)
{
click[i,j]=10;//显现一切的雷
}
}
}
}
if(bulei[x,y]>0&&bulei[x,y]<9)
{
click[x,y]=10;
}
}
else
{
Panjie(x,y);
}
}
///
///回到游戏入手下手的界面
///
///
///
privatevoidbtnreplay_Click(objectsender,EventArgse)
{
//初始化统统包含布雷,界面,click数组
Startscr();
}
///
///盘算游戏所用的工夫
///
///
///
privatevoidtimer1_Tick(objectsender,EventArgse)
{
time++;
if(time<=99)
{
if(time<10)
{
labtime.Text=("00"+time.ToString());
}
else
{
labtime.Text=("0"+time.ToString());
}
}
else
{
if(time<99)
{
labtime.Text=(time.ToString());
}
else
{
timer1.Enabled=false;
MessageBox.Show("RIMEOVER");
time=0;
timerEnable=1;
}
}
}
///
///在启动的游戏时初始化界面
///
///
///
privatevoidlabdraw_Paint(objectsender,PaintEventArgse)
{
Graphicsdline=e.Graphics;
if(bl==0)
{
Blpl();
Drawscreen(dline);
}
else
{
Drawscreen(dline);
}
}
///
/////单击时触发的事务
///
///
///
privatevoidlabdraw_MouseClick(objectsender,MouseEventArgse)
{
bl=10;
inti=0,j=0;
if(timerEnable==0)//判别游戏是不是处于停止形态
{
timer1.Enabled=true;
Graphicsdline=labdraw.CreateGraphics();//将LAB1创建成图形工具
intmx=0,my=0;
intmx2=0,my2=0;
intmx3=0,my3=0;
//判别鼠标所点地位
mx2=e.X;
my2=e.Y;
for(i=0;i<ls;i++)
{
for(j=0;j<hs;j++)
{
mx=4+i*2+i*20;
my=4+j*2+j*20;
//找到单击地位代表的数组
if(mx<mx2&&mx+20+4>mx2&&my<my2&&my2<my+20+4)
{
mx3=i;
my3=j;
break;
}
}
if(j<9)
{
break;
}
}
//判别是左击仍是右击
if(e.Button==MouseButtons.Right&&click[mx3,my3]!=10&&mx3>=0&&my3>=0&&click[mx3,my3]!=16)
{
//第2次右击
if(click[mx3,my3]==11&&click[mx3,my3]!=10)
{
click[mx3,my3]=12;
--qishu;
}
else
{
//第1次右击
if(click[mx3,my3]!=12&&click[mx3,my3]!=10)
{
if(qishu
{
click[mx3,my3]=11;
qishu++;
}
}
if(click[mx3,my3]==12&&click[mx3,my3]!=10)
{
click[mx3,my3]=13;
}
}
//右击的画图事务
Rdraw(dline);
Qishu();
}
else
{
//左击
if(click[mx3,my3]!=11&&click[mx3,my3]!=16)
{
click[mx3,my3]=15;
Colorc=Color.FromArgb(224,224,224);
//清屏用背景色彩
labdraw.CreateGraphics()。Clear(c);
Panlei(mx3,my3);
Drawscreen(dline);
}
if(bulei[mx3,my3]==100)
{
MessageBox.Show("GAMEOVER");
timer1.Enabled=false;
timerEnable=1;
}
}
if(sum==lgs)
{
MessageBox.Show("GAMEWIN");
timer1.Enabled=false;
timerEnable=1;
}
}
}
privatevoidFrm1_Load(objectsender,EventArgse)
{
Qishu();//输入雷的个数
//this.Height=hs*22+20;
//this.Width=ls*22+8;
}
}
}
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。
柔情似水 该用户已被删除
沙发
发表于 2015-1-18 14:40:46 来自手机 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-24 12:53:17 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
分手快乐 该用户已被删除
地板
发表于 2015-2-1 16:04:21 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
透明 该用户已被删除
5#
发表于 2015-2-7 09:01:12 | 只看该作者
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
莫相离 该用户已被删除
6#
发表于 2015-2-21 17:15:54 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
山那边是海 该用户已被删除
7#
发表于 2015-3-6 21:03:43 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
简单生活 该用户已被删除
8#
发表于 2015-3-13 09:45:04 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
海妖 该用户已被删除
9#
发表于 2015-3-20 19:37:39 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-17 07:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表