編程連連看
A. 怎樣做一個電腦上運行的連連看
如果用C++的話,學一點簡單的
Win32
編程,使用gdi函數繪制就可以了,
邏輯很簡單
,樓主自己先研究一下,遇到具體問題可以再問我
B. 怎麼編程連連看
你的vc基礎咋樣
C. 求flash製作連連看游戲的編程思路,謝謝。
在設計採用單機模式,當在規定的時間內消完全部的圖片則當前關卡通過,若果在規定的時間內沒能消完所有的圖片則游戲結束,重新開始游戲。游戲規則是模仿普通的連連看游戲,主要是滑鼠兩次點擊的圖片是否消去的問題,當前,前提是點擊兩張相同的圖片,若點擊的是同一張圖片或者兩張不同的圖片,則不予處理。在兩張相同的圖片用三根以內的直線連在一起,就可以消去;否則,不予處理。
游戲過程,如果玩家在一定的時間內消完則提示玩家勝利,並進入下一關。如果在一定的時間內圖片沒有消完則提示玩家時間到。每關以此類推。
一、 所有圖片都是按約定好的種類數和在同一區域的重復次數隨機出現,並且每張圖片的出現次數為偶數,時間會有限制,每一關的圖片數量或時間是不同的,這樣就增加了游戲的難度。
二、 在同一區域中,圖片出現的種類數和重復數是可以由玩家選擇的,時間由游戲約定。不過玩家選擇的種類數和重復次數必須是偶數才可以順利完成游戲,否則游戲雖然可以正常運行,但無法完成游戲。
在一種方案中,由於出現的圖像按種類數和重復數都由軟體約定,這樣就缺乏玩家自主選擇的空間,只是在完系統已經是設定好的游戲,不能改變什麼,這樣就在無意中降低了玩家在游戲過程中的樂趣,最後致使玩家放棄繼續玩下去。我們參考了網路上的連連看游戲,考慮到游戲的娛樂性。所以我們放棄第一種方案的設計思想,參考網路上流行的連連看游戲,設計第二種方案。
3主要問題
開始製作游戲時,主要解決問題有以下幾個方面:如何設置整個游戲的界面;如何控制連連看游戲中隨機圖片的生成且每種圖片必須為偶數個;游戲開始後,判斷滑鼠兩次點擊的圖片能否消去,即圖片是否相同且圖片之間路徑的判斷;如何判斷游戲是否結束以及輸贏問題等。
3.4技術要求
本游戲軟體可以再大多數計算機上運行,游戲中能正確判斷滑鼠兩次點下的圖片是否可以消去、能正確判斷游戲是否已經結束。
4、 系統設計:
針對上面的需求分析,我們把整個軟體分成兩個模塊:1、整體界面的設計和圖片的隨機生成;2、圖片路徑判斷函數;
一下就是系統結構圖:
4.1基本思路
4.1.1游戲畫面問題的思路
畫面,對於設計者來說,可以算是最簡單的地方;但對於玩家,這卻是最重要的,一般玩家不會關心你是怎麼實現的,他所關心的是畫面的美觀,漂亮,是不是能讓人賞心悅目。
.2獲取圖片位置的思路
通過數組從圖片庫隨即獲取規定個數的圖片,隨機分布在畫布上。圖片個數一定是個偶數個。
4.1.3 路徑判斷的思路
連連看所要求的是:
1:兩個目標是相同的
2:兩個目標之間連線的折點不超過兩個。(連接線由x軸和y軸的平行線組成)那麼分析一下連接的情況可以看到,一般分三種情況
1:直線相連2:一個折點3:兩個折點;
可以發現,如果有折點,每個折點必定有且至少有一個坐標(x或者y)是和其中一個目標點是相同的,也就是說,折點必定在兩個目標點所在的x方向或y方向的直線上。
所以設計思路就是:
假設目標點p1,p2,如果有兩個折點分別在z1,z2那麼,所要進行的是
1:如果驗證p1,p2直線連線,則連接成立
2:搜索以p1,p2的x,y方向四條直線(可能某兩條直線會重合)上的有限點,每次取兩點作為z1,z2,驗證p1到z1/z1到z2/z2到p2是否都能直線相連,是則連接成立。
4.1.4其他問題的思路
其他功能將在後面的具體各個部分的設計過程當中分別進行介紹。
4.2主界面的設計
由於這個程序的界面並不是很復雜,所以用到的控制項也不多,主要核心內容還是後台的代碼設計。圖片的隨機生成主要是用到一個random()函數將隨機數賦值給flag[ ]數組中的每個元素,然後根據數組元素值,來顯示圖片。
4.2.1界面的設計
1、色彩上:總結人們的視覺習慣和色彩對眼睛的健康影響,決定對於畫布採用黑色背景,神秘而大方;右邊的控制區採用天藍色,配合左邊純黑的背景,就像黑夜中的藍天,純潔而大方。
2、功能上:背景就是窗體,右側是一個groupbox控制項,用來放置控制按鈕,下方是一個grogressbar控制項,用來顯示時間條。
4.2.2圖片的隨機生成
實現這個功能要分很多個步驟:
1. 程序運行時即載入游戲需要的N張圖片,默認情況下圖片種類是18,重復數是4(重復數必須是偶數),並且可以選擇是否重列。通過一個循環,載入隨機的選擇N種圖片。具體載入圖片的代碼如下:
private void InteBmp(int maxnum)
{
g_g=this.Creatphics();
for(int i=0;i<MAPWIDTH;i++)
for(int j=0;j<WAPHEIGHT;j++)
gamp[i,j]=0;
IniteRandoMap(ref gamp,maxnum);
AI=new Kernal(ref gmap);
for(int i=0;i<maxnum;i++)
{
ResourceManager rm=new ResourceManager(「LLK data」,Assembly,GetExecut ingAssembly() );
img[i]=(Image)rm.GetObject(i.ToString( )+」.bmp」);
//img[i]=(Image)Bitmap.FormFile(「Images\\」+(i+1). ToString( )+」.bmp」);
}
for(int i=0;i<6;i++)
{
//bombimg[i]=(Image)Bitmap.FromFile(「Image\\B」+(i++). ToString( )+」.bmp」);.
}
}
2. 當確認游戲開始時,通過畫圖過程完成圖片生成,畫圖的過程代碼如下
private bool CheckWin(ref int[,]map)
{
Bool Win=true;
for(int i=0;i0)
{
for(int i=0;i<multipic;i++)
{
Int xrandom=r.Next(19);
Int yrandom=r,Next(11);
If(map[xrandom,yrandom]==0)
{
map[xrandom,yrandom]=num;
}
else
i--;
}
num--;
}
}
private void FreshMap(ref int[,]map)
{
random r=new Random();
for (int i=0;i<MAPWIDTH;i++)
for(int j=0;j<MAPHEIGHT;j++)
{
if(gmap[i,j]!=0)
{
int x=r.Next(19);
int y=r.Next(11);
int temp=gmap[x,y];
gmap[x,y]=gmap[i,j]
gmap[i,j] =temp;
}
TransportMap(ref gmap);
}
private void TransportMap(ref int[,]map)
{
for (int i=0;i<MAPWIDTH;i++)
for(int j=0;j<MAPHEIGHT;j++)
{
AI.GiveMapValue(i,j,map[i,j]);
}
}
//在指定位置畫指定圖
private void Draw(Graphics g,Image scrImg,int PicxX,int PicV)
{
g.DrawImage(scrImg,new Point(PicX,PicV));
}
private void Forml_Paint(object sender,PaintEventArg e)
{
g_g.DrawLine(new.Pen(newSolidBrush(Color.DeepSkyBlue),5),0,11*34+5,19*34
,11*34+5);
If(bStart)
{
For(int i=0;i209)
{
MessageBox.Show(「游戲區域內最多隻有209個孔,您選的數據太多!請重新選!」);
textBox1.Text=」18」;
textBox2.Text=」4」;
return;
}
IniteBmp(picnum);
If(bStart)
{
MessageBox.Show(「游戲已在運行!」);
return;
}
else
{
bStart=true;
this.Invalidate();
music.Play(「Sounds\\ bg-03.mid」);
}
}
重新實現代碼如下:
Private void RefreshMap(ref int[,] map)
{
if ( int i=0;i<MAPWIDTH;i++)
for(int j<MAPHEIGHT;j++)
{
If(gmap[I,j]!=0)
{
Draw(g_g,img[gmap[I,j]-1],i*PICWIDTH,j*PICHEIGHT);
}
}
}
private void FreshMap(ref int[,] map)
{
Random r=new Random();
for(int i=0;j<MAPWIDTH;i++)
for(int j=0;j<MAPHEIGHT;j++)
{
if(gmap[I,j]!=0)
{
int x=r,Nex(19);
int y=r,Nex(11);
int temp=gmap[x,y];
gmap[x,y]=gmap[I,j];
gmap[I,j]=temp;
}
}
TransportMap(ref gmap);
}
Private void button2_Click(object sender,EventArgs e)
{
Refreshplayer.Play();
FreshMap(ref gmap);
This.Invalidate();
}
4.2.4得分設置
本游戲一改前人風格,採用全新計分方式,使人們在尋找相同圖片的同時還注意路徑的選擇,更增加了游戲的趣味性,具體規則:直連得10分,一個拐點的20,兩個拐點得40.用一個Label控制項存儲得分。
實現代碼:
Switch(corner[2].X)
{
Case1;
Score+=20;//一個拐點加20;
g_g.DrawLine(pen,new Point(p1.X*31+15,p1.Y*34+17),new
Point(corner[0].X*31+15,corner[0],Y*34+17)),;
g_g.DrawLine(pen,new point(p2.X*31+15,p2.Y*34+17),new
Point(corner[0].X*31+15,corner[0],Y*34+17));
Thread.Sleep(100);
EraseBlock(g_g,p1,p2);
g_g.DrawLine(bkpen,new Point(p1.X*31+15,p1.Y*34+17)new
Point(corner[0].X*31+15,corner[0],Y*34+17);
g_g.DrawLine(bkpen,new Point(p1.X*31+15,p2.Y*34+170new
Point(corner[0].X*31+15,corner[0],Y*34+17);
break;
case 2;
score+=40;
Point[ ]ps={new Point(p1.X*31+15,p1.Y*34+17),new<br/> Point(corner[1].X*31+15,corner[1],Y*34+17),new<br/> Point(corner[0].X*31+15,corner[0],Y*34+17),newPoint(p2.X*31+15,p2.Y*34+17));<br/> g_g.DrawLine(pen,ps);<br/> Thread.Sleep(100);<br/> EraseBlock(g_g,p1,p2);<br/>//foreach(Point mp in ps)<br/>//{<br/> //MessageBox.Box.Show(「+mp.X.ToString( )+」,」+mp.Y.ToString( )+」)」));<br/>//}
break;
case 0;
score+=10;
g_g.DrawLine(pen,ps);Point(corner[0].X*31+15,corner[0],Y*34+17),newPoint(p2.X*31+15,p2.Y*34+17));
Thread.Sleep(100);
EraseBlock(g_g,p1,p2);
g_g.DrawLine(pen,ps);Point(corner[0].X*31+15,corner[0],Y*34+17),newPoint(p2.X*31+15,p2.Y*34+17));
break;
default:break;
}
//RefreshMap(ref gmap)
Label5.Text=score.ToString( );
參考:知道回答 #564313762
D. C#游戲編程實例
《C#編程典型實例解析》根據C#的不同應用對象,精選了48個C#編程典型實例,分為3章。第TIME章為基礎與應用編程實例,為初學者提供C#基礎應用編程入門的實例;第2章為網路與通信應用編程實例,介紹使用C#實現網路與通信應用編程的方法與技巧;第3章為圖形圖像及計算機安全與維護編程實例,介紹使用C#實現圖形圖像及計算機安全與維護編程的方法與技巧。書中每一個編程實例的講解一般都是先給出設計目標,然後介紹實現該目標的基本思想和方法,最後詳細給出其核心程序的源代碼,並對程序的關鍵部分進行講解,並給出程序的運行效果,濃縮了C#應用程序設計的精華。 《C#編程典型實例解析》是C#編程人員的實踐經驗和智慧的結晶,通過一個個典型實例解析,總結了C#編程的難點和關鍵技術,詳盡而具體地解析了使用C#進行應用程度開發的方法與技巧。《C#編程典型實例解析》對於有C#應用基礎的編程人員和應用開發人員以及初學C#編程的新手都是一本很實用的參考書。《C#編程典型實例解析》實例源代碼可以從中國水利水電出版社網站免費下載,網址為: http://www.waterpub.com.cn/softdown/。
E. 關於 C# .net 的 小游戲編程,如:連連看,貪吃蛇的游戲 有沒關於這方面的書, 給點經驗哈
我自己做過一個連連看的,我可以把代碼發給你!不過你先得給我一個郵箱!
這個是我剛剛學C#時的一個作品,支持多套皮膚,自動換背景等,但是沒有做時間限制和關卡!
給你截個圖吧,喜歡的話就發個郵箱,給個分吧!
F. 求flash製作連連看游戲的編程思路,謝謝。
...既然會用C語言編程,像flash,Director,VB等等多媒體的軟體。首先自己應該在繪圖軟體中繪制好連連需要的對象,然後再在多媒體軟體中寫程序代碼 ...
G. 用c#怎麼編程連連看游戲
這個一兩句也說不太清除的,給你介紹本書吧;《visual C#經典游戲編程開發》 第一張就是講連連看的,後面還有推箱子、黑白棋、坦克大戰等游戲的編程思路講解 希望對你有幫助
H. 小游戲如何編寫如連連看
要學編程,很麻煩的,一般要去學校學才能學到,如果你可以試下去網路上學學C語言和C++``這是編程的理論基礎`很麻煩,C語言要學2個月,C++要學更久,建議還是不要了`有機會去學校學或者專業機構培訓
I. android studio開發動物連連看不出現摁扭圖片
是因為有個別代碼錯誤。
在AbstractBoard的代碼中,當程序需要創建N個Piece對象時,程序會直接調用ImageUtil的getPlayImages()方法去獲取圖片,該方法會隨機從res/drawable目錄中取得N張圖片。
軟體開發是根據用戶要求建造出軟體系統或者系統中軟體部分的一個產品開發的過程。軟體開發是一項包括需求獲取、開發規劃、需求分析和設計、編程實現。
J. 連連看游戲的編程思想
連連看
應該是能轉2個彎吧<-這個不清楚
然後你從某個點出發向四周遞歸尋找。。最多隻能轉兩次就行啦
主要思想是遞歸