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> 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<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() { @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<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() { @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(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() { @Override public void onClick(DialogInterface dialog, int which) { gogame();//继续游戏重置牌面 } }); aldg.setButton(DialogInterface.BUTTON_NEGATIVE, "退出游戏", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); aldg.setButton(DialogInterface.BUTTON_NEUTRAL, "查看排行榜", new OnClickListener() { @Override public 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() { @Override public void onClick(DialogInterface dialog, int which) { Button1();//调出排行榜界面 } }); aldg.setButton(DialogInterface.BUTTON_NEUTRAL, "重开游戏", new OnClickListener() { @Override public 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() { @Override public void onClick(DialogInterface dialog, int which) { gogame();//继续游戏重置牌面 } }); aldg.setButton(DialogInterface.BUTTON_NEGATIVE, "退出游戏", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); aldg.setButton(DialogInterface.BUTTON_NEUTRAL, "查看排行榜", new OnClickListener() { @Override public 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() { @Override public void onClick(DialogInterface dialog, int which) { Button1(); } }); aldg.setButton(DialogInterface.BUTTON_NEUTRAL, "重开游戏", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { star(); } }); aldg.show(); } // finalyexam(); 不知道能不能用上 } protected void gogame() { // TODO Auto-generated method stub edtcm.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() { @Override public void onClick(View v) { if(gamesz==true){ reshuz7(); }else if(gamesz==false){ reshuz5(); } } }); } protected void reshuz7() { // TODO Auto-generated method stub for (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(){ @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<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; } }