安卓拼圖游戲源碼
A. android拼圖游戲源碼 不要選擇難度,怎麼默認設置3*3
主界面開始之前,可以在該按鈕選擇附加選項,代表意義是:是否開始聲音、是否繼續上次最後玩的拼圖、是否隨機選擇一幅拼圖。
菜單,可分類管理:在列表右側,可上下拖動排序;在列表左側,可長按分類的更新、添加、刪除操作,可選擇媒體庫(sdcard 里圖片)玩拼圖。
列表界面圖片,可跳到拼圖界面。
長按圖片,可以下操作:
開始 + 完成贈言,那麼在完成拼圖後,會顯示您為該圖片設置的贈言,這個功能只要是為了,當您想找別人玩您指定的拼圖,當別人完成時可以看到您設置的贈言,增加些樂趣。
開始 + 比賽,那麼您就可以和別人一起來玩拼圖比賽(兩幅同樣的圖同樣的玩法設置),賽事完成後,會統計你們的各自所走的步數和用時。
改變分類,可對該圖分類改變操作。
刪除,可刪除該圖。
拆散關卡類,可對是關卡類的圖拆散操作。
菜單,可以下操作:
分類篩選,快速找到該分類拼圖。
操作選擇,必須先選擇圖片,然後可以將選擇的圖片改變分類、組成關卡類、刪除操作。
排序操作,當排序後,可圖片列表的圖片排序:先一張圖片,然後再另一張圖片,那麼這兩張圖片就會互換位置,從而達到排序效果。
拼圖界面菜單,可玩法設置。左右滑動可對照完整拼圖。
B. 急求用JAVA編寫的圖形化界面拼圖小游戲代碼!
個人見解,總體需要兩個二維數組(一個存儲正確圖片排列 Array1 String[][],一個隨機生成圖片排列Array2 String[][]),一個一維數組來存儲圖片的名稱Array3 String[],。
(1)如何實現圖片移動
使用帶圖片的按鈕(button =new button(getImage(Array[2][4]))),然後通過單擊事件來更改按鈕的圖片來源。 把被點擊的按鈕的圖片路徑更新到空白按鈕,並且把被點擊的按鈕圖片更新的成空白。其實就是變換兩個的二維數組成員的值。更新Array2中的值,然後重繪按鈕
如 Array[2][3]=「3.image」
Array[2][4]=「」
圖片3.image右移
Array[2][3]=「」
Array[2][4]=「3.image」
(2)如何判斷被單擊的網格與空白的網格是否相鄰
後台使用一個二維數組Array2來做映射。通過二維數組的下標來判斷,如Array[2][3]可以知道Array[2][4]是它右邊的那個。
(3)如何實現圖片的隨機擺放
比如有9個圖片,你可以命名1-9,然後初始化一個長度為9的一維String 數組Array3來存儲圖片的名稱,
使用隨機函數給二維數組Array2賦值,如Array2[2][3]=Array3[random()],這里要判斷這個圖片是否已被使用過,可以通過遍歷Array2來確定當前Array3這個值是否已經在Array2中了
最後通過Array1 和Array2來比較,用戶的拼圖是否正確。
語言組織能力有限。講不太清楚。
C. 小游戲拼圖的設計思路及C++代碼
就拼圖游戲吧。。
先搞一個IMG組件載入圖像
然後自己用工具將圖像切割成小塊。。(當然也可以動態的切割圖片,編碼少許復雜一點)
將圖片依次編號,載入imglist,
搞一個快捷按鈕指針數組。
然後再將搞一塊面板上面布滿相應數量快捷按鈕,搞一個快捷按鈕指針數組,每個數組元素依次賦值快捷按鈕,每個按鈕的TAG值中記錄好自己的編號,快捷按鈕隨機的使用imglst中的圖片
然後連續點的兩個按鈕就互換圖片索引。。
直到玩家覺得自己品好了,點擊完成按鈕。
循環檢測快捷按鈕數組中所有的快捷按鈕的tag值和圖片索引值是否相同,如果相同則顯示祝賀。。。當然也可以加上一個定時器。檢測玩家拼圖所用的時間。。然後按照一個規則給出一個過關分數,。。。很簡單的。。。自己動手,鍛煉一下,一個小時之內搞定。。。。
D. 同求funcode平台下拼圖游戲的C語言代碼
//第一題:#includevoidfun(char*a[],char*b[]){intl;/*獲取較短數組的長度*/if(strlen(*a)usingnamespacestd;classCircle{public:voidinput(double);//輸入voidprint();//輸出doublegetArea();//計算半徑private:doubler;//半徑};voidCircle::input(doublea){r=a;}doubleCircle::getArea(){returnr*r*3.14159;}voidCircle::print(){cout>a;c.input(a);c.print();return0;}
E. funcode拼圖游戲C語言代碼,急求
你好!
拼圖游戲用VC6編寫代碼可以嗎?可以嘗試完成
F. 求一個authorware拼圖游戲源碼。急用在線等
什麼源碼啊·? 我前段時間做過這個拼圖! 但是有瑕疵··
G. 如何編寫android拼圖游戲源碼
主界面開始之前,可以在該按鈕選擇附加選項,代表意義是:是否開始聲音、是否繼續上次最後玩的拼圖、是否隨機選擇一幅拼圖。
菜單,可分類管理:在列表右側,可上下拖動排序;在列表左側,可長按分類的更新、添加、刪除操作,可選擇媒體庫(sdcard 里圖片)玩拼圖。
列表界面圖片,可跳到拼圖界面。
長按圖片,可以下操作:
開始 + 完成贈言,那麼在完成拼圖後,會顯示您為該圖片設置的贈言,這個功能只要是為了,當您想找別人玩您指定的拼圖,當別人完成時可以看到您設置的贈言,增加些樂趣。
開始 + 比賽,那麼您就可以和別人一起來玩拼圖比賽(兩幅同樣的圖同樣的玩法設置),賽事完成後,會統計你們的各自所走的步數和用時。
改變分類,可對該圖分類改變操作。
刪除,可刪除該圖。
拆散關卡類,可對是關卡類的圖拆散操作。
菜單,可以下操作:
分類篩選,快速找到該分類拼圖。
操作選擇,必須先選擇圖片,然後可以將選擇的圖片改變分類、組成關卡類、刪除操作。
排序操作,當排序後,可圖片列表的圖片排序:先一張圖片,然後再另一張圖片,那麼這兩張圖片就會互換位置,從而達到排序效果。
拼圖界面菜單,可玩法設置。左右滑動可對照完整拼圖。
H. 求一個安卓開發小游戲源代碼,臨時交作業用
package com.fiveChess;
import android.app.Activity;
import android.os.Bundle;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
public class MainActivity extends Activity {
GameView gameView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
Display display = this.getWindowManager().getDefaultDisplay();
gameView = new GameView(this,display.getWidth(),display.getHeight());
setContentView(gameView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("重新開始").setIcon(android.R.drawable.ic_menu_myplaces);
menu.add("退出");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getTitle().equals("重新開始")){
gameView.canPlay = true;
gameView.chess = new int[gameView.row][gameView.col];
gameView.invalidate();
}else if(item.getTitle().equals("退出")){
finish();
}
return super.onOptionsItemSelected(item);
}
}
package com.fiveChess;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.view.View;
public class GameView extends View {
Context context = null;
int screenWidth,screenHeight;
String message = "";//提示輪到哪個玩家
int row,col; //劃線的行數和列數
int stepLength = 30;//棋盤每格間距
int[][] chess = null;//0代表沒有棋子,1代表是黑棋,2代表白旗
boolean isBlack = true;
boolean canPlay = true;
public GameView(Context context,int screenWidth,int screenHeight) {
super(context);
this.context = context;
this.screenWidth = screenWidth;
this.screenHeight = screenHeight;
this.message = "黑棋先行";
row = (screenHeight-50)/stepLength+1;
col = (screenWidth-10)/stepLength+1;
chess = new int[row][col];
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
canvas.drawRect(0, 0, screenWidth, screenHeight, paint);//畫背景
paint.setColor(Color.BLUE);
paint.setTextSize(25);
canvas.drawText(message, (screenWidth-100)/2, 30, paint);//畫最頂層的字
paint.setColor(Color.BLACK);
//畫棋盤
for(int i=0;i<row;i++){
canvas.drawLine(10, 50+i*stepLength, 10+(col-1)*stepLength, 50+i*stepLength, paint);
}
for(int i=0;i<col;i++){
canvas.drawLine(10+i*stepLength,50,10+i*stepLength,50+(row-1)*stepLength, paint);
}
for(int r=0;r<row;r++){
for(int c=0;c<col;c++){
if(chess[r][c] == 1){
paint.setColor(Color.BLACK);
paint.setStyle(Style.FILL);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
}else if(chess[r][c] == 2){
//畫白棋
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
paint.setColor(Color.BLACK);
paint.setStyle(Style.STROKE);
canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint);
}
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(!canPlay){return false;}
float x = event.getX();
float y = event.getY();
int r = Math.round((y-50)/stepLength);
int c = Math.round((x-10)/stepLength);
if(r<0 || r>row-1 || c<0 || c>col-1){return false;}
if(chess[r][c]!=0){return false;}//若有棋子則不再畫棋子了
if(isBlack){
chess[r][c] = 1;
isBlack = false;
message = "輪到白棋";
}else{
chess[r][c] = 2;
isBlack = true;
message = "輪到黑棋";
}
invalidate();
if(judge(r, c,0,1)) return false;
if(judge(r, c,1,0)) return false ;
if(judge(r, c,1,1)) return false;
if(judge(r, c,1,-1)) return false;
return super.onTouchEvent(event);
}
private boolean judge(int r, int c,int x,int y) {//r,c表示行和列,x表示在y方向上的偏移,y表示在x方向上的偏移
int count = 1;
int a = r;
int b = c;
while(r>=0 && r<row && c>=0 && c<col && r+x>=0 && r+x<row && c+y>=0 && c+y<col && chess[r][c] == chess[r+x][c+y]){
count++;
if(y>0){
c++;
}else if(y<0){
c--;
}
if(x>0){
r++;
}else if(x<0){
r--;
}
}
while(a>=0 && a<row && b>=0 && b<col && a-x>=0 && a-x<row && b-y>=0 && b-y<col && chess[a][b] == chess[a-x][b-y]){
count++;
if(y>0){
b--;
}else if(y<0){
b++;
}
if(x>0){
a--;
}else if(x<0){
a++;
}
}
if(count>=5){
String str = "";
if(isBlack){
str = "白棋勝利";
}else{
str = "黑棋勝利";
}
new AlertDialog.Builder(context).setTitle("游戲結束").setMessage(str).setPositiveButton("重新開始", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
chess = new int[row][col];
invalidate();
}
}).setNegativeButton("觀看棋局", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
canPlay = false;
}
}).show();
return true;
}
return false;
}
}
PS:五子棋,無需圖片,直接在程序里畫出來的。注意我發的是兩個文件,一個activity,一個類文件,別把它當成一個文件了
I. 1200分跪求JAVA數字拼圖游戲源代碼!
1:
import java.io.IOException;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
// 華容道原理的拼圖游戲。 利用輕組建的套用。
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class MyMainFrame extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
MyCanvas myCanvas;
JPanel panelNorth,panelPreview;
Button start,preview,set;
Container container;
public MyMainFrame() {//初使化
container=this.getContentPane();
start=new Button("開始");
start.addActionListener(this);
preview=new Button("預覽");
preview.addActionListener(this);
set = new Button("設置");
set.addActionListener(this);
panelPreview=new JPanel();
panelPreview.setLayout(null);
Icon icon=new ImageIcon ("images/pic_"+MyCanvas.pictureID+".jpg");
JLabel label=new JLabel(icon);
label.setBounds(0,0,400,400);
panelPreview.add(label);
panelNorth=new JPanel();
panelNorth.setBackground(Color.yellow);
panelNorth.add(start);
panelNorth.add(preview);
panelNorth.add(set);
myCanvas=new MyCanvas();
container.add(myCanvas,BorderLayout.CENTER);
container.add(panelNorth,BorderLayout.NORTH);
this.setTitle("成型拼圖小游戲-1212");
this.setLocation(300,200);
this.setSize(408,465);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(3);
} //end of 初始化 構造函數
public void actionPerformed(ActionEvent e) {
Button button=(Button)e.getSource();
if(button==start){
myCanvas.Start();
}else if(button==preview){
if(button.getLabel()=="預覽"){
container.remove(myCanvas);
container.add(panelPreview);
panelPreview.updateUI();
container.repaint();
button.setLabel("返回");
}else{
container.remove(panelPreview);
container.add(myCanvas);
container.repaint();
button.setLabel("預覽");
}
}else if(button==set){
Choice pic = new Choice();
//pic.add("QQ");
pic.add("美女");
int i=JOptionPane.showConfirmDialog(this,pic,"選擇圖片", JOptionPane.OK_CANCEL_OPTION);
//使用選擇對話框來進行選擇圖片。
if(i==JOptionPane.YES_OPTION){
MyCanvas.pictureID=pic.getSelectedIndex()+5;
myCanvas.reLoadPictrue();
Icon icon=new ImageIcon("images/pic_"+MyCanvas.pictureID+".jpg");
JLabel label=new JLabel(icon);
label.setBounds(0,0,400,400);
panelPreview.removeAll();
panelPreview.add(label);
panelPreview.repaint();
}
}
}
public static void main(String[] args) throws UnsupportedAudioFileException, LineUnavailableException, IOException
{
new MyMainFrame();
} //end of main
}
2:
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class MyCanvas extends JPanel implements MouseListener
{
/**
*
*/
private static final long serialVersionUID = 1L;
boolean hasAddActionListener=false;//設置方格的動作監聽器的標志位,TRUE為已經添加上動作事件
Cell cell[];//定義方格
Rectangle cellNull;//定義空方格區域 是一個矩形類
public static int pictureID=4;// 當前選擇的圖片代號
public MyCanvas() {
this.setLayout(null);
this.setSize(400,400);
cellNull=new Rectangle(300,300,100,100);//空方格區域在第三行每三列
cell=new Cell[16];
Icon icon;
for (int i = 0; i < 4; i++) {
for(int j=0;j<4;j++){
icon=new ImageIcon("images/pic_"+pictureID+"_"+(i*4+j+1)+".jpg");
cell[i*4+j]=new Cell(icon);
cell[i*4+j].setLocation(j*100,i*100);
this.add(cell[i*4+j]);
}
}
this.remove(cell[15]);//移除最後一個多餘的方格
} //放置9張小圖片並且移調最後一張
public void reLoadPictrue(){//當選擇其它圖形進行拼圖時,需重新載入新圖片
Icon icon;
for (int i = 0; i < 4; i++) {
for(int j=0;j<4;j++){
icon=new ImageIcon("images/pic_"+pictureID+"_"+(i*4+j+1)+".jpg");
cell[i*4+j].setIcon(icon);
}
}
}
public boolean isFinish(){//判斷是否拼合成功
for(int i=0;i<15;i++)
{ int x=cell[i].getBounds().x;
int y=cell[i].getBounds().y;
if(y/100*4+x/100!=i)
return false;
} //end of for
return true;
}
public void Start(){//對方格進行重新排列,打亂順序
while(cell[0].getBounds().x<=100&&cell[0].getBounds().y<=100){//當第一個方格距左上角較近時
int x=cellNull.getBounds().x;
int y=cellNull.getBounds().y;
int direction=(int)(Math.random()*4);//產生0-4,對應空方格的上下左右移動
if(direction==0){//空方格左移動,與左側方格互換位置,左側方格右移動
x-=100;
if(test(x,y)){
for(int j=0;j<15;j++){
if((cell[j].getBounds().x==x)&&(cell[j].getBounds().y==y)){//依次尋找左側的按鈕
cell[j].move("RIGHT",100);
cellNull.setLocation(x,y);
break;//找到後跳出for循環
}
}
}
}else if(direction==1){//RIGHT
x+=100;
if(test(x,y)){
for(int j=0;j<15;j++){
if((cell[j].getBounds().x==x)&&(cell[j].getBounds().y==y)){
cell[j].move("LEFT",100);
cellNull.setLocation(x,y);
break;
}
}
}
}else if(direction==2){//UP
y-=100;
if(test(x,y)){
for(int j=0;j<15;j++){
if((cell[j].getBounds().x==x)&&(cell[j].getBounds().y==y)){
cell[j].move("DOWN",100);
cellNull.setLocation(x,y);
break;
}
}
}
}else{//DOWN
y+=100;
if(test(x,y)){
for(int j=0;j<15;j++){
if((cell[j].getBounds().x==x)&&(cell[j].getBounds().y==y)){
cell[j].move("UP",100);
cellNull.setLocation(x,y);
break;
}
}
}
}
}
if(!hasAddActionListener)//如果尚未添加動作事件,則添加
for(int i=0;i<15;i++)//為第個方格添加動作事件,這樣單擊按鈕就能移動了
cell[i].addMouseListener(this);
hasAddActionListener=true;
}
private boolean test(int x,int y){
if((x>=0&&x<=200)||(y>=0&&y<=200))
return true;
else
return false;
}
public void mouseClicked(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void mousePressed(MouseEvent e) {
//方格的滑鼠事件,因為用到了MyCanvas中的一些方法,因此沒有在Cell類中處理滑鼠事件
Cell button=(Cell)e.getSource();
int x1=button.getBounds().x;//得到所單擊方格的坐標
int y1=button.getBounds().y;
int x2=cellNull.getBounds().x;//得到空方格的坐標
int y2=cellNull.getBounds().y;
if(x1==x2&&y1-y2==100)//進行比較,如果滿足條件則進行交換
button.move("UP",100);
else if(x1==x2&&y1-y2==-100)
button.move("DOWN",100);
else if(x1-x2==100&y1==y2)
button.move("LEFT",100);
else if(x1-x2==-100&&y1==y2)
button.move("RIGHT",100);
else
return;//不滿足就不進行任何處理
cellNull.setLocation(x1,y1);
this.repaint();
if(this.isFinish()){//進行是否完成的判斷
JOptionPane.showMessageDialog(this,"景鋒恭喜你完成拼圖,加油!想繼續下一關么?");
for(int i=0;i<15;i++)
cell[i].removeMouseListener(this);//如果已完成,撤消滑鼠事件,滑鼠單擊方格不在起作用
hasAddActionListener=false;
}
}
}
3:
import javax.swing.Icon;
import javax.swing.JButton;
public class Cell extends JButton {
/**
*
*/
private static final long serialVersionUID = 1L;
Cell(Icon icon){//實際為ICON
super(icon);
this.setSize(100,100);
}
public void move(String direction,int sleep){//方格的移動
if(direction=="UP"){
this.setLocation(this.getBounds().x,this.getBounds().y-100);
}else if(direction=="DOWN"){
this.setLocation(this.getBounds().x,this.getBounds().y+100);
}else if(direction=="LEFT"){
this.setLocation(this.getBounds().x-100,this.getBounds().y);
}else{
this.setLocation(this.getBounds().x+100,this.getBounds().y);
}
}
}
J. 運用Flash as3做中國省份地圖的拼圖游戲源代碼。按照代碼,只有幾個省份可匹配,其他的可移動但無法拼上
upHandle里的if(hitTestpixel... 這行改成
var bg_mc:MovieClip=this.getChildByName("t"+index+"bg_mc) as MovieClip;
if(bg_mc.hitTestPoint(mouseX,mouseY,true))
試試,你的問題是碰撞檢測沒有檢測到,AS3裡面沒有hitTestPixel這個方法,如果是你自己寫的話那就是這個方法里的問題了