纸牌游戏之四 游戏规则类
来源:互联网 发布:攻乎异端 斯害也已 编辑:程序博客网 时间: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
- 纸牌游戏之四 游戏规则类
- 猜纸牌游戏之二 实体类
- 纸牌游戏之五 主界面类
- 纸牌游戏之三
- 纸牌游戏之六 游戏概述
- 纸牌游戏
- 纸牌游戏
- 纸牌游戏
- 纸牌游戏
- 纸牌游戏
- 纸牌游戏
- 纸牌游戏
- 纸牌游戏
- 纸牌游戏
- 迅雷笔试之-纸牌游戏有牛无牛
- Swift游戏开发之俄罗斯方块:No.8 游戏规则
- Unity3D之UGUI——制作纸牌类游戏加入房间的输入面板
- 浅析:纸牌游戏 Java算法——之重复发牌
- PHP基础学习
- Hello world
- 第一次打字比赛
- Fedora下mysql的安装及详细配置
- IntelliJ IDEA的安装和启动
- 纸牌游戏之四 游戏规则类
- HTML速查列表
- Android常用的一些make命令
- 初窥Python(一)——使用pymongo连接MongoDB
- hibernate实体类(主键生成、date日期、枚举类型)
- HDU4521线段树
- 适配器模式(Adapter)
- Android学习推荐!
- 深入理解Java的接口和抽象类