Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 紙牌游戲之四 游戲規則類

紙牌游戲之四 游戲規則類

編輯:關於Android編程

package com.example.azhipai;

import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Mainactivity1 extends Activity {
	private int[] paire = new int[13];
	private int imgpath [] =new int[]{R.drawable.img14,R.drawable.img15,R.drawable.img3,R.drawable.img4,
			R.drawable.img5,R.drawable.img6,R.drawable.img7,R.drawable.img8,R.drawable.img9,R.drawable.img10,R.drawable.img11
			,R.drawable.img12,R.drawable.img13};
	private int [] cmsjs5=new int [5];//5局時的隨機數
	private int [] cmsjs7=new int [7];//7局時的隨機數
	private String[]cmsjs5index=new String[5];
	private String[]cmsjs7index=new String[7];//lvcmsjs加載的數據
	private String xz;//獲取的edtcm的文本
	private ImageView ivcpu,ivcm;
	private TextView tvshow;
	private EditText edtcm,edtusename;
	private Button btnesc,btnok,btnlogin,btnget;
	private int szcpu,szcm,cmexam,cpuexam,gamecishu,aa,cpusj;//電腦比牌用的數字,用戶比牌用的數字。aa作用於類型轉換=xz
	private MyDatabaseHelper mydbhelper;
	private String usename;
	private ListView lvZhipai,lvcmsjs;
	private List zhipai;
	protected boolean gamesz=false;//關於游戲的5局制和七局制
	
	 	@Override
	    protected void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.usenamesave);
	        btnlogin=(Button)findViewById(R.id.btnlogin);
	        edtusename=(EditText)findViewById(R.id.edtusename);
	        btnlogin.setOnClickListener(new View.OnClickListener(){
				@Override
				public void onClick(View v) {
					setusename();
					
				}});
	        }
	 	//設置登錄名的方法
	 	protected void setusename() {
	 		mydbhelper=new MyDatabaseHelper(Mainactivity1.this, "examsto.db", null, 2);
	   	 	mydbhelper.getWritableDatabase();
	   	 	usename=edtusename.getText().toString();
	   	 	if(!usename.equals("")){//輸入用戶名不能空
	   	 	SQLiteDatabase db=mydbhelper.getWritableDatabase();//創建數據庫
				ContentValues cv=new ContentValues();
				cv.clear();
				cv.put("name",usename);//插入name列中
				cv.put("examcm", 0);//插入examcm列中
				long l1=db.insert("exam", null, cv);
				if(l1!=-1){//判斷插入是否成功
					Toast.makeText(Mainactivity1.this, "插入數據成功", Toast.LENGTH_SHORT).show();
					//出歡迎游戲的對話框
					AlertDialog aldg=new AlertDialog.Builder(Mainactivity1.this).create();
			    	aldg.setIcon(R.drawable.ic_launcher);
			    	aldg.setTitle("提示");
			    	aldg.setMessage("你好"+usename+"歡迎進入紙牌游戲!");
			    	aldg.setButton(DialogInterface.BUTTON_POSITIVE, "進入", new OnClickListener() {
						@Override
						public void onClick(DialogInterface dialog, int which) {
								setContentView(R.layout.activity_main);//轉換頁面
						      	ivcpu=(ImageView) findViewById(R.id.ivcpu);
						        ivcm=(ImageView) findViewById(R.id.ivcm);
						        tvshow=(TextView)findViewById(R.id.tvshow);
						        edtcm=(EditText) findViewById(R.id.edtcm);
						        lvcmsjs=(ListView) findViewById(R.id.lvcmsz);
						        btnget=(Button)findViewById(R.id.btnget);
						        star();//游戲初始化
						}
					});
			    	aldg.show();	
				}
	   	 		}else{
	   	 			Toast.makeText(Mainactivity1.this, "用戶名不能為空!", Toast.LENGTH_SHORT).show();
	   	 			return;
	   	 	}
		}
	 	//游戲初始化
	 	private void star() {
	 		cmexam=0;cpuexam=0;gamecishu=0;gamesz=false;
	 		btnget.setVisibility(View.VISIBLE);//獲取按鈕為可見
	 		final String[] s = new String[] {"開始游戲", "游戲設置", "排行榜"};  
	    	tvshow.setText(R.string.show1);//設置tvshow的文本為游戲規玩法
	    	Builder bdr=new AlertDialog.Builder(Mainactivity1.this);
	    	bdr.setIcon(R.drawable.ic_launcher);
	    	bdr.setTitle("紙牌游戲");
	    	bdr.setItems(s, new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					if(s[which].equals("游戲設置")){  //s【which】即為選擇項的問本 
					gameset();//顯示游戲設置對話框
					}
					else if(s[which].equals("排行榜")){Button1();  }
					else if(s[which].equals("開始游戲")){
						 getcmpai();//選擇用戶得到牌的方式
						 regame();//為再次游戲
						 }
					Toast.makeText(Mainactivity1.this, s[which], Toast.LENGTH_SHORT).show();
				}
			});
	    	bdr.show();
	    	getcmpai();
	    	ok();//確定按鈕本項目的核心
		}
//	 	游戲設置
		protected void gameset() {
			final String gameset[]=new String[]{"五局制","七局制"};
	    	Builder bdr=new AlertDialog.Builder(Mainactivity1.this);
	    	bdr.setIcon(R.drawable.ic_launcher);
	    	bdr.setItems(gameset, new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					if(gameset[which].equals("五局制")){  
						gamesz=false;
						regame();
					}
					else if(gameset[which].equals("七局制")){  
						gamesz=true;
						regame();
					}
				}
			});
	    	bdr.show();
			
		}
		private void getcmpai() {
			btnget=(Button)findViewById(R.id.btnget);
	    	btnget.setOnClickListener(new View.OnClickListener() {
				@Override
				public void onClick(View v) {
				if(gamesz==true){
					paicmsjs7();
				}
				else if(gamesz==false){
					paicmsjs5();
				}
				btnget.setVisibility(View.INVISIBLE);
				}
			});
	    	
			
		}
		protected void paicmsjs7() {
			// TODO Auto-generated method stub
	    	lvcmsjs=(ListView) findViewById(R.id.lvcmsz);
	    	ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,cmsjs7index);//使用系統已經實現好的xml文件simple_list_item_1
	    	lvcmsjs.setAdapter(adapter);
	    	AlertDialog aldg=new AlertDialog.Builder(Mainactivity1.this).create();
	    	aldg.setIcon(R.drawable.ic_launcher);
	    	aldg.setTitle("提示");
	    	aldg.setMessage("恭喜你獲得了7個數字!");
	    	aldg.setButton(DialogInterface.BUTTON_NEGATIVE,"確定",new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
			}});
	    	aldg.show();
		}
		protected void paicmsjs5() {
			// TODO Auto-generated method stub
			lvcmsjs=(ListView) findViewById(R.id.lvcmsz);
	    	ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,cmsjs5index);//使用系統已經實現好的xml文件simple_list_item_1
	    	lvcmsjs.setAdapter(adapter);
	    	AlertDialog aldg=new AlertDialog.Builder(Mainactivity1.this).create();
	    	aldg.setIcon(R.drawable.ic_launcher);
	    	aldg.setTitle("提示");
	    	aldg.setMessage("恭喜你獲得了5個數字!");
	    	aldg.setButton(DialogInterface.BUTTON_NEGATIVE,"確定",new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
			}});
	    	aldg.show();
		}
//		重新開始游戲
		protected void regame() {
			// TODO Auto-generated method stub
			//五局制隨機數
			creatRandom5();//產生不同的隨機數
			creatRandom7();
		}
		 private int[] creatRandom5() {
			    int j = 0;
		        int number = 13;// 控制隨機數產生的范圍
		        List arr = new ArrayList();
		        for (int i = 0; i < number; i++)
		         arr.add(i + 1);// 為ArrayList添加元素
		        for (j = 0; j < cmsjs5.length; j++)
		        {
		         int index = (int) (Math.random() * number);// 產生一個隨機數作為索引
		         cmsjs5[j] = (Integer) arr.get(index);
		         arr.remove(index);// 移除已經取過的元素
		         number--;// 將隨機數范圍縮小1      
		         cmsjs5index[j]="數字: "+cmsjs5[j];
		        }
		        return cmsjs5;
		       } 
		 private int[] creatRandom7() {
			 	   int j = 0;
		           int number = 13;// 控制隨機數產生的范圍
		           List arr = new ArrayList();
		           for (int i = 0; i < number; i++)
		            arr.add(i + 1);// 為ArrayList添加元素
		           for (j = 0; j < cmsjs7.length; j++)
		           {
		            int index = (int) (Math.random() * number);// 產生一個隨機數作為索引
		            cmsjs7[j] = (Integer) arr.get(index);
		            arr.remove(index);// 移除已經取過的元素
		            number--;// 將隨機數范圍縮小1      
		            cmsjs7index[j]="數字: "+cmsjs7[j];
		           }
		           return cmsjs7;
		          }
//		游戲規則
		public void game(){
			gamecishu+=1;
			if(gamecishu<7 &&gamesz==true){
	    	if(szcm>szcpu){tvshow.setText("恭喜你獲勝了!分數+"+(szcm-szcpu));cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}
	    	else if(szcmszcpu){tvshow.setText("恭喜你獲勝了!分數+"+(szcm-szcpu));cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}
		    	else if(szcmszcpu){tvshow.setText("恭喜你獲勝了!分數+"+(szcm-szcpu));cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}
		    	else if(szcmszcpu){tvshow.setText("恭喜你獲勝了!分數+"+(szcm-szcpu));cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}
			    	else if(szcm adapter1 = new ArrayAdapter(this,android.R.layout.simple_list_item_1,cmsjs7index);//使用系統已經實現好的xml文件simple_list_item_1
			    	lvcmsjs.setAdapter(adapter1);
			    	Toast.makeText(Mainactivity1.this, "成功使用此牌", Toast.LENGTH_SHORT).show();
			    	paicm();
			    	return;
			    }else  {
			    	//Toast.makeText(Mainactivity1.this, "對不起你沒有此牌", Toast.LENGTH_SHORT).show();
			    	tvshow.setText("");
			    	
			    	}
		}
			}
		protected void reshuz5() {//本來是重置listview但是並未實現
			for (int i=0;i adapter1 = new ArrayAdapter(this,android.R.layout.simple_list_item_1,cmsjs5index);//使用系統已經實現好的xml文件simple_list_item_1
			    	lvcmsjs.setAdapter(adapter1);
			    	Toast.makeText(Mainactivity1.this, "成功使用此牌", Toast.LENGTH_SHORT).show();
			    	paicm();
			    }else {
			    	//Toast.makeText(Mainactivity1.this, "對不起你沒有此牌", Toast.LENGTH_SHORT).show();
			    	tvshow.setText("");
			    	
			    }
//			int i;
//			for (i=0;i adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,cmsjs5index);//使用系統已經實現好的xml文件simple_list_item_1
//			    	lvcmsjs.setAdapter(adapter);
//			    	}else{
						//用戶選牌的方式和限制
//			    	}
			}
			
			
		}
		//用戶選牌的方式和限制
		private void paicm(){
		    	String xz=edtcm.getText().toString();
		    	if(xz.equals("")){
		    		AlertDialog aldg=new AlertDialog.Builder(Mainactivity1.this).create();
		        	aldg.setIcon(R.drawable.ic_launcher);
		    		aldg.setTitle("提示");
		    		aldg.setMessage("請您輸入相應的數字");
		    		aldg.setButton(DialogInterface.BUTTON_POSITIVE, "確定", new OnClickListener() {
		    			@Override
		    			public void onClick(DialogInterface dialog, int which) {
		    				edtcm.setText("");//輸入框不能為空
		    				edtcm.findFocus();//輸入框獲得焦點,沒什麼卵用無視!
		    			}
		    		});
		    		aldg.show();
		    	}
		    	else{
		    		aa=Integer.parseInt(xz);//類型轉換把輸入框的內容就是xz轉換成int類型
		    		szcm = Integer.parseInt(xz);//szcm就是比牌時用的數字
		    		if(aa<14&&aa>0&&gamesz==false){//輸入的內容限制條件,gamesz==false游戲規則選擇false為5局即默認
		    			//判斷輸入內容是否在數組中此處不完善
		    		switch (aa){
		    		//以下皆為得到用戶的牌
		        	case 1:ivcm.setImageResource(imgpath[0]);break;
		        	case 2:ivcm.setImageResource(imgpath[1]);break;
		        	case 3:ivcm.setImageResource(imgpath[2]);break;
		        	case 4:ivcm.setImageResource(imgpath[3]);break;
		        	case 5:ivcm.setImageResource(imgpath[4]);break;
		        	case 6:ivcm.setImageResource(imgpath[5]);break;
		        	case 7:ivcm.setImageResource(imgpath[6]);break;
		        	case 8:ivcm.setImageResource(imgpath[7]);break;
		        	case 9:ivcm.setImageResource(imgpath[8]);break;
		        	case 10:ivcm.setImageResource(imgpath[9]);break;
		        	case 11:ivcm.setImageResource(imgpath[10]);break;
		        	case 12:ivcm.setImageResource(imgpath[11]);break;
		        	case 13:ivcm.setImageResource(imgpath[12]);break;
		        	}
//		    		獲取cpu的牌
		    		pai();
//		    		開始游戲
		    		game();
		    		
		    			}
		    		else if(aa<14&&aa>0&&gamesz==true){//輸入的內容限制條件,gamesz==Ture游戲規則選擇為七局制時的選擇
		    		switch (aa){
		    		//以下皆為得到用戶的牌
		        	case 1:ivcm.setImageResource(imgpath[0]);break;
		        	case 2:ivcm.setImageResource(imgpath[1]);break;
		        	case 3:ivcm.setImageResource(imgpath[2]);break;
		        	case 4:ivcm.setImageResource(imgpath[3]);break;
		        	case 5:ivcm.setImageResource(imgpath[4]);break;
		        	case 6:ivcm.setImageResource(imgpath[5]);break;
		        	case 7:ivcm.setImageResource(imgpath[6]);break;
		        	case 8:ivcm.setImageResource(imgpath[7]);break;
		        	case 9:ivcm.setImageResource(imgpath[8]);break;
		        	case 10:ivcm.setImageResource(imgpath[9]);break;
		        	case 11:ivcm.setImageResource(imgpath[10]);break;
		        	case 12:ivcm.setImageResource(imgpath[11]);break;
		        	case 13:ivcm.setImageResource(imgpath[12]);break;
		        	}
//		    		獲取cpu的牌
		    		pai();
//		    		開始游戲
		    		game();
		    		
		    		}
		    		else{
		    				Toast.makeText(Mainactivity1.this, "請輸入1~13的數字", Toast.LENGTH_LONG).show();
		    				edtcm.setText("");
		    				edtcm.findFocus();
		    				return;
		    			}
		    			}
		    		}
//		cpu得到牌的方法每次不重復
		private void pai(){
	    	szcpu=(int)(Math.random()*12)+1;
	    	if(szcpu!=cpusj){
	    	cpusj=szcpu;
	    	}else{
	    		cpusj=(int)(Math.random()*12)+1;
	    		szcpu=cpusj;
	    	}
	    	paire[cpusj-1]=cpusj;
	    	ivcpu.setImageResource(imgpath[szcpu-1]);
    }
		protected void Button1() {
//			頁面轉換調出排行榜頁面
			setContentView(R.layout.star_main);  
	        exam();//加載並查詢數據的方法
	        btnesc = (Button) findViewById(R.id.buttonesc);  
	        btnesc.setOnClickListener(new Button.OnClickListener() {  
	            public void onClick(View v) {  
	                setContentView(R.layout.activity_main); //調出游戲界面並實現方法
	                ivcpu=(ImageView) findViewById(R.id.ivcpu);
	                ivcm=(ImageView) findViewById(R.id.ivcm);
	                tvshow=(TextView)findViewById(R.id.tvshow);
	                edtcm=(EditText) findViewById(R.id.edtcm);
	                btnok=(Button)findViewById(R.id.buttonok);
	                lvcmsjs=(ListView) findViewById(R.id.lvcmsz);
	                star();//游戲初始化
	            }  
	        });  
			
	        
		}
		private void exam() {
			Button btnDataToList=(Button)findViewById(R.id.buttoning);
			  lvZhipai=(ListView)findViewById(R.id.lvZhipai);
				btnDataToList.setOnClickListener(new View.OnClickListener(){
					@Override
					public void onClick(View v) {
						SQLiteDatabase db=mydbhelper.getWritableDatabase();
						//Cursor c=db.query("book", null, "pages>?", null, null, null, "pages desc");
						Cursor c=db.query("exam", null, null, null,null,null ,"examcm desc"); //最後一個參數:頁數降序! name:玩家;分數:score desc;
						zhipai=new ArrayList();
						if(c!=null){
							while(c!=null && c.moveToNext()){
								Zhipai zp=new Zhipai(); //新建一個book對象;實體類,要實體類的每個屬性;
								zp.setId(c.getInt(0));
								zp.setName(c.getString(1));
								zp.setExamcm(c.getInt(2));
								zhipai.add(zp); //每一個對象,都要加進books集合裡面;
							}
							c.close();   //關閉游標,切記,不要忘記完畢cursor對象;
						}
						//加載
						String []examInfo=new String[zhipai.size()]; //數組長度,集合長度;
						ArrayAdapterarrayAdapter=null; //適配器;
						int i=0;
						for(Zhipai z:zhipai){ //寫了一個迭代器,從books集合裡面逐個取對象book;
							//將圖書相關信息組合成一個字符串,存儲在字符串數組中的相應位置;
							examInfo[i]=z.getId()+"|\t\t\t"+z.getName()+" \t\t"+z.getExamcm();
							i++;
						}
						//使用字符串數組初始化ArrayAdapter對象;
						arrayAdapter=new ArrayAdapter(Mainactivity1.this,android.R.layout.simple_list_item_1,examInfo);
						lvZhipai.setAdapter(arrayAdapter);
					}
				});
			
		}
		@Override
	    public boolean onCreateOptionsMenu(Menu menu) {
	        // Inflate the menu; this adds items to the action bar if it is present.
	        getMenuInflater().inflate(R.menu.main, menu);
	        return true;
	        }
}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved