C#做的俄罗斯方块求指导,不多说直接上源码 源码地址:http://download.csdn.net/detail/dong413876225/4294048 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ,,源码还要人下下来指导你?还要1资源分?我擦,,你就是要别人下你的资源这是别人写的public Game() { this.Load += new System.EventHandler(Form7_Load); InitializeComponent(); } Point[,] ai ={{new Point(150,0),new Point(150,-30),new Point(120,-30),new Point(180,-30)},//T {new Point(150,0),new Point(150,-30),new Point(150,-60),new Point(150,-90)},//长条 {new Point(150,0),new Point(150,-30),new Point(150,-60),new Point(120,-60)},//L {new Point(150,0),new Point(180,0),new Point(150,-30),new Point(120,-30)},//Z {new Point(150,0),new Point(180,0),new Point(150,-30),new Point(180,-30)}};//方块 Label a = new Label(); Label b = new Label(); Label c = new Label(); Label d = new Label();//用户控制的方块 Random r = new Random();//随机种子 int bi = 0;//方块的种类 Timer tm = new Timer();//计时器 private void Form7_Load(object sender, EventArgs e) { Width = 300; Height = 360; Location = new Point(500, 150); Text = "俄罗斯方块"; KeyPreview = true; KeyPress += new KeyPressEventHandler(press);//布局 a.Size = b.Size = c.Size = d.Size = new Size(30, 30); a.BackColor = b.BackColor = c.BackColor = d.BackColor = Color.Red; Controls.Add(a); Controls.Add(b); Controls.Add(c); Controls.Add(d);//画方块 xuanze(); //计时器 tm.Enabled = true; tm.Interval = 700; tm.Tick += new EventHandler(jishi); } void xuanze()//选择种类 { bi = r.Next(0, 5); a.Location = ai[bi, 0]; b.Location = ai[bi, 1]; c.Location = ai[bi, 2]; d.Location = ai[bi, 3]; jieshu(); } void press(object sender, KeyPressEventArgs e) { int i = 0; string key = e.KeyChar.ToString(); if (key == "a") i = xialuo(-30, 0); if (key == "d") i = xialuo(30, 0); if (key == "s") i = xialuo(0, 30);//移动碰撞判断 if (key == "s" && (a.Top == 300 || b.Top == 300 || c.Top == 300 || d.Top == 300)) i = 1;//移动出界判断 if (key == "a" && (a.Left == 0 || b.Left == 0 || c.Left == 0 || d.Left == 0)) i = 1; if (key == "d" && (a.Left == 270 || b.Left == 270 || c.Left == 270 || d.Left == 270)) i = 1; if (key == "w") i = xuanzhuan();//旋转碰撞判断 if (i == 0) switch (key) { case "a": a.Left -= 30; b.Left -= 30; c.Left -= 30; d.Left -= 30; break; case "d": a.Left += 30; b.Left += 30; c.Left += 30; d.Left += 30; break; case "s": a.Top += 30; b.Top += 30; c.Top += 30; d.Top += 30; break; case "w": if (bi < 4)//if里面是旋转的算法 { int m = b.Top - 30, n = b.Left - 30; c.Location = new Point(c.Top - m + n, 60 - (c.Left - n) + m); a.Location = new Point(a.Top - m + n, 60 - (a.Left - n) + m); d.Location = new Point(d.Top - m + n, 60 - (d.Left - n) + m); } break; } } void jishi(object sender, EventArgs e) { if (xialuo(0, 30) == 1) huahua(); panduan(); a.Top += 30; b.Top += 30; c.Top += 30; d.Top += 30; } void panduan()////最下碰撞判断 { if (a.Top == 300 || b.Top == 300 || c.Top == 300 || d.Top == 300) huahua(); } void huahua()//画画- -! { Point[] pp = { a.Location, b.Location, c.Location, d.Location }; for (int i = 0; i < 4; i++) { Label s = new Label(); s.BackColor = Color.Blue; s.Size = new Size(30, 30); s.Location = pp[i]; Controls.Add(s); } xiaotu(); xuanze(); } int xialuo(int x, int y)//移动碰撞判断 { foreach (Control i in Controls) if (i.BackColor == Color.Blue) if (i.Location == new Point(a.Left + x, a.Top + y) || i.Location == new Point(b.Left + x, b.Top + y) || i.Location == new Point(c.Left + x, c.Top + y) || i.Location == new Point(d.Left + x, d.Top + y)) return 1; return 0; } int xuanzhuan()//旋转碰撞判断 { Point[] pp = { a.Location, b.Location, c.Location, d.Location }; int m = pp[1].Y - 30, n = pp[1].X - 30; pp[2] = new Point(pp[2].Y - m + n, 60 - (pp[2].X - n) + m); pp[0] = new Point(pp[0].Y - m + n, 60 - (pp[0].X - n) + m); pp[3] = new Point(pp[3].Y - m + n, 60 - (pp[3].X - n) + m); foreach (Control i in Controls) if (i.BackColor == Color.Blue) if (i.Location == pp[1] || i.Location == pp[0] || i.Location == pp[2] || i.Location == pp[3]) return 1; return 0; } void xiaotu()//消图 { int k = 0; for (int m = 0; m < 4; m++) for (int i = 0; i <= 300; i += 30) { k = 0; foreach (Control l in Controls) if (l.BackColor == Color.Blue && l.Top == i) k++; if (k > 9) foreach (Control l in Controls) { if (l.Top == i) l.Location = new Point(-100, -100); if (l.Top < i) l.Top += 30; } } foreach (Control l in Controls) if (l.Location == new Point(-100, -100)) Controls.Remove(l); } void jieshu()//游戏结束判断 { foreach (Control i in Controls) if (i.BackColor == Color.Blue) if (i.Location == a.Location || i.Location == b.Location || i.Location == c.Location || i.Location == d.Location) { tm.Stop(); MessageBox.Show("游戏结束"); Close(); } } }} c# winform如何通过存储过程来实现图片上传下载? 一个逗号毁了我 我又来提问了,问下C#保存设置用XML还是exe.config还是注册表还是其它形式好? C#post提交带有特殊符号的数据老是出错 [50分]图片裁剪 VS2005 SP1发布,大家安装了吗?有什么改进,修复了哪些BUG? 怎么上传到服务器目录. 浏览器问题? 有个问题,帮忙出出主义。 C# 实体类中定义 [DbColumn("") 参数代表什么意义 .net 2.0下“WebService” [讨论一解决方案,以解决web超时问题,期待你的参与!]
还要1资源分?
我擦,,你就是要别人下你的资源
这是别人写的public Game()
{
this.Load += new System.EventHandler(Form7_Load);
InitializeComponent();
}
Point[,] ai ={{new Point(150,0),new Point(150,-30),new Point(120,-30),new Point(180,-30)},//T
{new Point(150,0),new Point(150,-30),new Point(150,-60),new Point(150,-90)},//长条
{new Point(150,0),new Point(150,-30),new Point(150,-60),new Point(120,-60)},//L
{new Point(150,0),new Point(180,0),new Point(150,-30),new Point(120,-30)},//Z
{new Point(150,0),new Point(180,0),new Point(150,-30),new Point(180,-30)}};//方块
Label a = new Label();
Label b = new Label();
Label c = new Label();
Label d = new Label();//用户控制的方块
Random r = new Random();//随机种子
int bi = 0;//方块的种类
Timer tm = new Timer();//计时器 private void Form7_Load(object sender, EventArgs e)
{
Width = 300;
Height = 360;
Location = new Point(500, 150);
Text = "俄罗斯方块";
KeyPreview = true;
KeyPress += new KeyPressEventHandler(press);//布局
a.Size = b.Size = c.Size = d.Size = new Size(30, 30);
a.BackColor = b.BackColor = c.BackColor = d.BackColor = Color.Red;
Controls.Add(a);
Controls.Add(b);
Controls.Add(c);
Controls.Add(d);//画方块
xuanze();
//计时器
tm.Enabled = true;
tm.Interval = 700;
tm.Tick += new EventHandler(jishi);
}
void xuanze()//选择种类
{
bi = r.Next(0, 5);
a.Location = ai[bi, 0];
b.Location = ai[bi, 1];
c.Location = ai[bi, 2];
d.Location = ai[bi, 3];
jieshu();
}
void press(object sender, KeyPressEventArgs e)
{
int i = 0;
string key = e.KeyChar.ToString();
if (key == "a") i = xialuo(-30, 0);
if (key == "d") i = xialuo(30, 0);
if (key == "s") i = xialuo(0, 30);//移动碰撞判断
if (key == "s" && (a.Top == 300 || b.Top == 300 || c.Top == 300 || d.Top == 300)) i = 1;//移动出界判断
if (key == "a" && (a.Left == 0 || b.Left == 0 || c.Left == 0 || d.Left == 0)) i = 1;
if (key == "d" && (a.Left == 270 || b.Left == 270 || c.Left == 270 || d.Left == 270)) i = 1;
if (key == "w") i = xuanzhuan();//旋转碰撞判断
if (i == 0)
switch (key)
{
case "a": a.Left -= 30; b.Left -= 30; c.Left -= 30; d.Left -= 30; break;
case "d": a.Left += 30; b.Left += 30; c.Left += 30; d.Left += 30; break;
case "s": a.Top += 30; b.Top += 30; c.Top += 30; d.Top += 30; break;
case "w":
if (bi < 4)//if里面是旋转的算法
{
int m = b.Top - 30, n = b.Left - 30;
c.Location = new Point(c.Top - m + n, 60 - (c.Left - n) + m);
a.Location = new Point(a.Top - m + n, 60 - (a.Left - n) + m);
d.Location = new Point(d.Top - m + n, 60 - (d.Left - n) + m);
}
break;
}
}
void jishi(object sender, EventArgs e)
{
if (xialuo(0, 30) == 1) huahua();
panduan();
a.Top += 30; b.Top += 30; c.Top += 30; d.Top += 30; }
void panduan()////最下碰撞判断
{
if (a.Top == 300 || b.Top == 300 || c.Top == 300 || d.Top == 300)
huahua();
}
void huahua()//画画- -!
{
Point[] pp = { a.Location, b.Location, c.Location, d.Location };
for (int i = 0; i < 4; i++)
{
Label s = new Label();
s.BackColor = Color.Blue;
s.Size = new Size(30, 30);
s.Location = pp[i];
Controls.Add(s);
}
xiaotu();
xuanze();
}
int xialuo(int x, int y)//移动碰撞判断
{
foreach (Control i in Controls)
if (i.BackColor == Color.Blue)
if (i.Location == new Point(a.Left + x, a.Top + y) || i.Location == new Point(b.Left + x, b.Top + y) || i.Location == new Point(c.Left + x, c.Top + y) || i.Location == new Point(d.Left + x, d.Top + y))
return 1;
return 0;
}
int xuanzhuan()//旋转碰撞判断
{
Point[] pp = { a.Location, b.Location, c.Location, d.Location };
int m = pp[1].Y - 30, n = pp[1].X - 30;
pp[2] = new Point(pp[2].Y - m + n, 60 - (pp[2].X - n) + m);
pp[0] = new Point(pp[0].Y - m + n, 60 - (pp[0].X - n) + m);
pp[3] = new Point(pp[3].Y - m + n, 60 - (pp[3].X - n) + m);
foreach (Control i in Controls)
if (i.BackColor == Color.Blue)
if (i.Location == pp[1] || i.Location == pp[0] || i.Location == pp[2] || i.Location == pp[3])
return 1;
return 0;
}
void xiaotu()//消图
{
int k = 0;
for (int m = 0; m < 4; m++)
for (int i = 0; i <= 300; i += 30)
{
k = 0;
foreach (Control l in Controls)
if (l.BackColor == Color.Blue && l.Top == i)
k++;
if (k > 9)
foreach (Control l in Controls)
{
if (l.Top == i)
l.Location = new Point(-100, -100);
if (l.Top < i)
l.Top += 30;
}
}
foreach (Control l in Controls)
if (l.Location == new Point(-100, -100))
Controls.Remove(l);
}
void jieshu()//游戏结束判断
{
foreach (Control i in Controls)
if (i.BackColor == Color.Blue)
if (i.Location == a.Location || i.Location == b.Location || i.Location == c.Location || i.Location == d.Location)
{
tm.Stop();
MessageBox.Show("游戏结束");
Close();
}
} }
}