纸牌游戏之四 游戏规则类

来源:互联网 发布:攻乎异端 斯害也已 编辑:程序博客网 时间:2024/06/05 03:44
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作用于类型转换=xzprivate MyDatabaseHelper mydbhelper;private String usename;private ListView lvZhipai,lvcmsjs;private List<Zhipai> 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(){@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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<String> adapter = new ArrayAdapter<String>(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() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});    aldg.show();}protected void paicmsjs5() {// TODO Auto-generated method stublvcmsjs=(ListView) findViewById(R.id.lvcmsz);    ArrayAdapter<String> adapter = new ArrayAdapter<String>(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() {@Overridepublic 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(szcm<szcpu){tvshow.setText("你失败了呢,再接再厉!");cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}    else if(szcm==szcpu){tvshow.setText("打了个平手,都不得分!");}    AlertDialog aldg=new AlertDialog.Builder(Mainactivity1.this).create();    aldg.setIcon(R.drawable.ic_launcher);    aldg.setTitle("提示");    aldg.setMessage("您已经进行了"+gamecishu+"场游戏了!\n"+"您的得分:"+cmexam+"\nAI得分:"+cpuexam+"是否继续?");    aldg.setButton(DialogInterface.BUTTON_POSITIVE, "继续游戏", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {gogame();//继续游戏重置牌面}});    aldg.setButton(DialogInterface.BUTTON_NEGATIVE, "退出游戏", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}});    aldg.setButton(DialogInterface.BUTTON_NEUTRAL, "查看排行榜", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Button1();//调出排行榜界面}});    aldg.show();    caozuodata();//实现数据的更新}else if(gamecishu==7&&gamesz==true){//当gamesz为true时是七局制游戏if(szcm>szcpu){tvshow.setText("恭喜你获胜了!分数+"+(szcm-szcpu));cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}    else if(szcm<szcpu){tvshow.setText("你失败了呢,再接再厉!");cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}    else if(szcm==szcpu){tvshow.setText("打了个平手,都不得分!");}caozuodata();//实现数据的更新AlertDialog aldg=new AlertDialog.Builder(Mainactivity1.this).create();    aldg.setIcon(R.drawable.ic_launcher);    aldg.setTitle("提示");    aldg.setMessage("您已经进行了"+gamecishu+"场游戏了!\n"+"您的得分:"+cmexam+"\nAI得分:"+cpuexam+"这是最后一场游戏。");    aldg.setButton(DialogInterface.BUTTON_POSITIVE, "查看计分表", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Button1();//调出排行榜界面}});    aldg.setButton(DialogInterface.BUTTON_NEUTRAL, "重开游戏", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {star();//游戏初始化界面}});    aldg.show();}if(gamecishu<5 &&gamesz==false){    if(szcm>szcpu){tvshow.setText("恭喜你获胜了!分数+"+(szcm-szcpu));cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}    else if(szcm<szcpu){tvshow.setText("你失败了呢,再接再厉!");cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}    else if(szcm==szcpu){tvshow.setText("打了个平手,都不得分!");}    caozuodata();//实现数据的更新    AlertDialog aldg=new AlertDialog.Builder(Mainactivity1.this).create();    aldg.setIcon(R.drawable.ic_launcher);    aldg.setTitle("提示");    aldg.setMessage("您已经进行了"+gamecishu+"场游戏了!\n"+"您的得分:"+cmexam+"\nAI得分:"+cpuexam+"是否继续?");    aldg.setButton(DialogInterface.BUTTON_POSITIVE, "继续游戏", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {gogame();//继续游戏重置牌面}});    aldg.setButton(DialogInterface.BUTTON_NEGATIVE, "退出游戏", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}});    aldg.setButton(DialogInterface.BUTTON_NEUTRAL, "查看排行榜", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Button1();//调出排行榜界面}});    aldg.show();    caozuodata();//实现数据的更新}else if(gamecishu==5&&gamesz==false){if(szcm>szcpu){tvshow.setText("恭喜你获胜了!分数+"+(szcm-szcpu));cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}    else if(szcm<szcpu){tvshow.setText("你失败了呢,再接再厉!");cmexam+=szcm-szcpu;cpuexam-=szcm-szcpu;}    else if(szcm==szcpu){tvshow.setText("打了个平手,都不得分!");}AlertDialog aldg=new AlertDialog.Builder(Mainactivity1.this).create();    aldg.setIcon(R.drawable.ic_launcher);    aldg.setTitle("提示");    aldg.setMessage("您已经进行了"+gamecishu+"场游戏了!\n"+"您的得分:"+cmexam+"\nAI得分:"+cpuexam+"这是最后一场游戏。");    aldg.setButton(DialogInterface.BUTTON_POSITIVE, "查看计分表", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Button1();}});    aldg.setButton(DialogInterface.BUTTON_NEUTRAL, "重开游戏", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {star();}});    aldg.show();}//    finalyexam(); 不知道能不能用上    } protected void gogame() {// TODO Auto-generated method stubedtcm.setText("");    ivcpu.setImageDrawable(getResources().getDrawable(R.drawable.img16));    ivcm.setImageDrawable(getResources().getDrawable(R.drawable.img16));    ok();}private void finalyexam() {// TODO Auto-generated method stub}private void caozuodata(){ //更新数据 SQLiteDatabase db2=mydbhelper.getWritableDatabase(); ContentValues cv2=new ContentValues(); cv2.put("examcm", cmexam); int i3=db2.update("exam", cv2, "name=?", new String[]{usename});//当用户名等于刚开始输入的用户名是更新 if(i3!=0){ Toast.makeText(Mainactivity1.this, "录入成功", Toast.LENGTH_SHORT).show(); }     }//确定按钮的点击事件通过此按钮实现选牌,并进行游戏起到链接上下文的作用private void ok(){btnok=(Button)findViewById(R.id.buttonok);    btnok.setOnClickListener(new View.OnClickListener() {    @Overridepublic void onClick(View v) {    if(gamesz==true){    reshuz7();    }else if(gamesz==false){    reshuz5();    }    }});    }protected void reshuz7() {// TODO Auto-generated method stubfor (int i=0;i<cmsjs7index.length;i++) {xz=edtcm.getText().toString();    if (xz.equals(""+cmsjs7[i])) {    cmsjs7[i]=0;    cmsjs7index[i]="";lvcmsjs.setAdapter(null);ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(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<cmsjs5index.length;i++) {xz=edtcm.getText().toString();    if (xz.equals(""+cmsjs5[i])) {    cmsjs5[i]=0;    cmsjs5index[i]="";lvcmsjs.setAdapter(null);ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(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<cmsjs5index.length;i++) {//    if (xz.equals(""+cmsjs5index[i])) {//    cmsjs5index[i]="";//lvcmsjs.setAdapter(null);//ArrayAdapter<String> adapter = new ArrayAdapter<String>(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(){@Overridepublic 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<Zhipai>();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()]; //数组长度,集合长度;ArrayAdapter<String>arrayAdapter=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<String>(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;        }}

0 0