下載/瀏覽

Download Report

Transcript 下載/瀏覽

貪食蛇
班級:資工四乙
學號:498G0012
姓名:吳秉恆
 動機
覺得這款遊戲十分有趣,玩家可以控制它的行進
方向去吃果實,以增加蛇的身體長度,甚至可以漸漸
加速!這款遊戲能輕易上手,往住讓玩家只想著該如
何增加蛇的身體長度而渾然忘我,可說是一款簡單刺
激得讓人愛不釋手的小遊戲,這次增加了讓蛇自行移
動吃果實,閃避身體。
程式碼
判斷吃到東西 身體增加
switch ( Direction )
{
case Direction.Down:
lbls[headPoint.X][headPoint.Y + 1].Index = 1;
Body.Insert( 0 , new Point( headPoint.X , headPoint.Y + 1 ) );
break;
case Direction.Left:
lbls[headPoint.X - 1][headPoint.Y].Index = 1;
Body.Insert( 0 , new Point( headPoint.X - 1 , headPoint.Y ) );
break;
case Direction.Right:
lbls[headPoint.X + 1][headPoint.Y].Index = 1;
Body.Insert( 0 , new Point( headPoint.X + 1 , headPoint.Y ) );
break;
case Direction.Up:
lbls[headPoint.X][headPoint.Y - 1].Index = 1;
Body.Insert( 0 , new Point( headPoint.X , headPoint.Y - 1 ) );
break;
}
是否有吃到食物
private bool IsEatTarget()
{
if ( Head.X == Target.X && Head.Y == Target.Y )
return true;
return false;
}
if ( IsEatTarget() )
{
lbls[end.X][end.Y].Index = Length;
Body.Add( end );
InitTarget();
}
重新產生新的點
public void InitTarget()
{
if ( gameState.IsShowAgain )
{
Target = targets[0];
targets.RemoveAt( 0 );
if ( targets.Count == 0 )
{
gameState.IsShowAgain = false;
}
}
else
{
Random r = new Random();
int x , y;
while ( true )
{
x = r.Next( 0 , Width );
y = r.Next( 0 , Height );
if ( lbls[x][y].Index == 0 )
{
break;
}
}
Target = new Point( x , y );
}
}
 閃避身體
private void AvoidDead()
//判斷圍起來大小 看哪個方向值比較大 往大的方向走
{
List<OutParameter> outs = new List<OutParameter>();
//陣列
int t; //求空間大小
Point p; //方向
//先求出所有有空格的方向
for ( int i = 0 ; i <= 3 ; i++ )
{
p = Convert( (Direction)i );
// 方向
t = CalBlank( snake.Head.X + p.X , snake.Head.Y + p.Y );
//求值
if ( t != 0 )
{
outs.Add( new OutParameter( t , outIndex , (Direction)i ) ); //找出新的路徑
}
}
……………………………………………………….
//最大的數,地方走
if ( count == 1 )
{
snake.Direction = outs[maxi].Direction;
//direction 方向
return;
}
……………….
Demo



資料來源
http://www.shs.edu.tw/works/essay/2011/11/
2011111421570326.pdf
http://zh.wikipedia.org/wiki/%E8%B4%AA%E
9%A3%9F%E8%9B%87
報告完畢