當前位置:編程學習大全網 - 源碼下載 - C#設計鬥地主遊戲![主人進來]

C#設計鬥地主遊戲![主人進來]

我是壹個吃蛇的人!

給妳源代碼

使用系統;

使用系統。收藏;

使用系統。繪圖;

使用系統。Windows . Forms

使用系統。計時器;

命名空間GreedySnake

{

#地區蛇蛇

///

///蛇的描述。

///

公共類蛇

{

私有控件dcControl

private static int imove direction = 0x 1000;//蛇的移動方向初始化為右-0x1000。

private int iCount//關節的總數

私人int iRadius//關節的半徑

私有靜態int iCurrentHeadX//當前蛇頭的中心坐標x。

私有靜態int iCurrentHeadY//當前蛇頭的中心坐標y。

私有靜態int iCurrentTrailX//當前蛇尾的中心坐標x。

私有靜態int iCurrentTrailY//當前蛇尾的中心坐標y。

iNextHeadX中的私有靜態int//下壹刻蛇頭的中心坐標x

iNextHeadY中的私有靜態int//下壹刻黑魚的中心坐標y

private static int iPreTrailX//前壹時刻蛇尾的中心坐標x。

私有靜態int iPreTrailY//前壹時刻蛇尾的中心坐標y。

私有靜態數組列表alSnake//存儲整條蛇。

private bool bDisposing = true

private bool bIsEatself = false//自己吃嗎?

private bool bIsOutOfRange = false;//是否超出許可活動範圍?

公共控制數據控制

{

設置{ dcControl = value}

get { return dcControl}

}

公共int移動方向

{

set { iMoveDirection = value}

get { return iMoveDirection}

}

公共int計數

{

設置{ iCount = value}

get { return iCount}

}

公共int半徑

{

set { iRadius = value}

get { return iRadius}

}

公共int CurrentHeadX

{

set { iCurrentHeadX = value}

get { return iCurrentHeadX}

}

公共int CurrentHeadY

{

set { iCurrentHeadY = value}

get { return iCurrentHeadY}

}

公共int CurrentTrailX

{

set { iCurrentTrailX = value}

get { return iCurrentTrailX}

}

公共int當前鐵路

{

set { iCurrentTrailY = value}

get { return iCurrentTrailY}

}

public int NextHeadX

{

set { iNextHeadX = value}

get { return iNextHeadX}

}

public int NextHeadY

{

set { iNextHeadY = value}

get { return iNextHeadY}

}

公共int PreTrailX

{

設置{ iPreTrailX = value}

get { return iPreTrailX}

}

公共int審前

{

設置{ iPreTrailY = value}

get { return iPreTrailY}

}

公共圖書館本身

{

設置{ bIsEatself = value}

get { return bIsEatself}

}

公共圖書館是獨立的

{

set { bIsOutOfRange = value}

get { return bIsOutOfRange}

}

public Snake() : this(null,20,5)

{

//

// TODO:在此添加構造函數邏輯。

//

}

公共蛇(控制控制,int iCount,int iRadius)

{

DcControl =控制;

Count = iCount

半徑= iRadius

current adex = current tralx = pre tralx = 5;

current heady = current traily = pre traily = 5;

initialize();

}

~蛇()

{

Dispose(假);

}

//初始化蛇

私有void初始化()

{

alSnake = new ArrayList();

for(int I = 0;我{

阿爾斯納克。Insert(0,new SnakeNode(DcControl,CurrentHeadX,CurrentHeadY,Radius));

current adex+= 2 *半徑;

}

current adex-= 2 *半徑;

next headx = current headx+2 * Radius;

NextHeadY = CurrentHeadY

}

公共void Dispose()

{

Dispose(真);

GC。suppress finalize(this);

}

公共void Dispose( bool bDisposing)

{

if (bDisposing)

{

//調用Dispose來處理受控資源中的字段。

move direction = 0x 1000;

current headx = current heady = next headx = next heady = 5;

阿爾斯納克。clear();

}

//清除不受控制的資源

}

//澆頭

公共void AddHead()

{

阿爾斯納克。Insert(0,new SnakeNode(DcControl,NextHeadX,NextHeadY,Radius));

CurrentHeadX = NextHeadX

CurrentHeadY = NextHeadY

count++;

}

//拖尾

公共void AddTrail()

{

阿爾斯納克。Add(new SnakeNode(DcControl,PreTrailX,PreTrailY,Radius));

count++;

((snake node)alSnake[Count-1])。draw();

}

//尾部移除

公共void RemoveTrail()

{

如果(alSnake。Count & gt1)

{

pretraillx =((snake node)alSnake[Count-1])。CenterX

pre trayly =((snake node)alSnake[Count-1])。CenterY

阿爾斯納克。RemoveAt(alSnake。count-1);

count-;

currenttralx =((snake node)alSnake[Count-1])。CenterX

current traily =((snake node)alSnake[Count-1])。CenterY

}

}

//移動到下壹個位置

公共void MoveNext()

{

//澆頭

AddHead();

//繪畫頭

((SnakeNode)alSnake[0])。draw();

//清除尾部(用背景色填充蛇尾)

((snake node)alSnake[Count-1])。clear();

//尾部移除(從ArrayList中移除蛇尾)

remove trail();

}

//畫出整條蛇

公共void Draw()

{

for(int I = 0;我{

((SnakeNode)alSnake[i])。draw();

}

}

//去掉整條蛇。

公共void清除()

{

for(int I = 0;我{

((SnakeNode)alSnake[i])。clear();

}

}

//重置運動方向

public void ResetMoveDirection(字符串strKeyData)

{

//獲取鍵盤輸入

int iKeyDirection

開關(strKeyData)

{

案例“W”:

案例“向上”:

ikey direction = 0x 0001;

打破;

案例“S”:

案例“向下”:

ikey direction = 0x 0010;

打破;

案例“A”:

案例“左”:

ikey direction = 0x 0100;

打破;

案例“D”:

案例“正確”:

ikey direction = 0x 1000;

打破;

默認值:

ikey direction = 0x 0010;

打破;

}

//重置蛇的移動方向(考慮關鍵點方向和當前蛇的移動方向)

int I direction = ikey direction | move direction;

if(I direction = = 0x 0011 | | I direction = = 0x 1100)

MoveDirection = MoveDirection//運動方向保持不變。

其他

MoveDirection = iKeyDirection//移動方向等於按鍵方向。

}

//是否超出範圍?

公共作廢支票()

{

GetNextHeadXY();

//檢查是否自己吃。

foreach(alSnake中的SnakeNode序列號)

{

如果(sn。CenterX = = NextHeadX & amp& ampsn。CenterY == NextHeadY)

{

IsEatself = true

打破;

}

}

//檢查是否超出允許的活動範圍。

IsOutOfRange = NextHeadX & lt0 | | NextHeadX & gtDcControl。Width | | NextHeadY & lt0 | | NextHeadY & gtDcControl。身高;

}

//預先計算下壹個位置的坐標

私有void GetNextHeadXY()

{

開關(移動方向)

{

案例0x0001:

NextHeadX = CurrentHeadX

next heady = current heady-2 * Radius;

打破;

案例0x0010:

NextHeadX = CurrentHeadX

next heady = current heady+2 * Radius;

打破;

案例0x0100:

NextHeadX = CurrentHeadX-2 * Radius;

NextHeadY = CurrentHeadY

打破;

案例0x1000:

next headx = current headx+2 * Radius;

NextHeadY = CurrentHeadY

打破;

默認值:

打破;

}

}

}

#結束區域

#區域蛇結蛇的關節

///

///蛇註

///蛇的關節

///

公共類SnakeNode

{

私有控件dcControl//用於繪制的控件。

private int iCenterX//中心坐標x

私人國際中心;//中心坐標y

私人int iRadius//半徑

私有顏色colorNode//顏色

公共控制數據控制

{

設置{ dcControl = value}

get { return dcControl}

}

公共集成中心x

{

set { iCenterX = value}

get { return iCenterX}

}

公共娛樂中心

{

set { iCenterY = value}

get { return iCenterY}

}

公共int半徑

{

set { iRadius = value}

get { return iRadius}

}

公共顏色節點

{

設置{ colorNode = value}

get { return colorNode}

}

private bool bDisposing = true

public SnakeNode() : this(null,0,0,5)

{

}

public SnakeNode(Control control,int iX,int iY,int iR)

{

DcControl =控制;

CenterX = iX

CenterY = iY

半徑= iR

}

~SnakeNode()

{

Dispose(假);

}

公共void Dispose()

{

Dispose(真);

GC。suppress finalize(this);

}

公共void Dispose( bool bDisposing)

{

if (bDisposing)

{

//調用Dispose來處理受控資源中的字段。

centex = CenterY = 0;

半徑= 5;

}

//清除不受控制的資源

}

//自己畫

公共void Draw()

{

繪制(顏色。藍色);

}

公共空白繪制(顏色顏色)

{

//用指定的顏色畫壹個圓。

ColorNode = color

draw circle(ColorNode);

}

//清除

公共void清除()

{

//用控件的背景色畫壹個圓。

繪制圓形(DcControl。背景色);

}

//以關節為圓心畫壹個圓。

公共空心畫圈(顏色顏色)

{

使用(圖形dc = DcControl。CreateGraphics())

{

//創建實心畫筆

solid brush sb brush = new solid brush(color);

//創建圓的範圍。

float x = CenterX-Radius;

float y =中心半徑;

浮動寬度= 2 *半徑;

浮動高度= 2 *半徑;

//創建開始和掃描的弧度。

float fStartAngle = 0.0F

float fSweepAngle = 360.0F

//畫壹個圓

華盛頓。FillPie(sbBrush,x,y,width,height,fStartAngle,fSweepAngle);

}

}

}

#結束區域

#地區蛇食蛇食

///

///蛇食的描述。

///

公共類蛇食

{

私有控件dcControl

private int iMaxCount//剩余食物的最大數量。

private int iCurrentCount//目前剩余的食物總量

私人int iRadius//關節的半徑

private Color[]acolor = new Color[]{ Color。紅色,彩色。綠色,彩色。黃色};//新點的顏色範圍

私有靜態數組列表alSnakeFood//蛇食

private bool bDisposing = true

公共控制數據控制

{

設置{ dcControl = value}

get { return dcControl}

}

public int MaxCount

{

set { iMaxCount = value}

get { return iMaxCount}

}

公共國際貨幣賬戶

{

set { iCurrentCount = value}

get { return iCurrentCount}

}

公共int半徑

{

set { iRadius = value}

get { return iRadius}

}

public SnakeNode this[int index]

{

得到

{

if(index & lt;0 | | index & gt=當前計數)

{

拋出新的IndexOutOfRangeException();

}

return(snake node)alSnakeFood[index];

}

}

public SnakeFood() : this(null,5,5)

{

}

公共蛇食(控制控制,int iMaxCount,int iRadius)

{

DcControl =控制;

MaxCount = iMaxCount

current count = 0;

半徑= iRadius

alSnakeFood = new ArrayList();

}

~蛇食()

{

Dispose(假);

}

公共void Dispose()

{

Dispose(真);

GC。suppress finalize(this);

}

公共void Dispose( bool bDisposing)

{

if (bDisposing)

{

//調用Dispose來處理受控資源中的字段。

current count = 0;

alSnakeFood。clear();

}

//清除不受控制的資源

}

//添加食物

public void AddFood()

{

Random Random = new Random();

int iStep = Radius+Radius;

int iX = Radius + iStep * random。下壹個(0,DcControl。width/iStep);

int iY = Radius + iStep * random。下壹個(0,DcControl。height/iStep);

snake node sn = new snake node(DC control,iX,iY,iRadius);

Random Random index = new Random();

Color color = acolor[randomIndex。下壹個(0,acolor。長度)];

顏色=色彩。綠色;

sn。繪制(顏色);

alSnakeFood。添加(序列號);

//目前剩余的食物總量加上1。

current count++;

}

//刪除吃過的食物。

公共void remove food(int index)

{

if(current count & gt;0)

{

alSnakeFood。remove at(iIndex);

//目前剩余食物總量減少1。

當前計數-;

}

}

//畫出所有的食物

公共void Draw()

{

foreach(alSnakeFood中的SnakeNode序列號)

{

sn。draw();

}

}

//取出所有食物。

公共void清除()

{

foreach(alSnakeFood中的SnakeNode序列號)

{

sn。clear();

}

}

}

#結束區域

}

  • 上一篇:Ubuntu有什麽好用的錄屏工具或截圖工具?總有壹款合適妳
  • 下一篇:學習嵌入式驅動前需要掌握哪些知識?
  • copyright 2024編程學習大全網