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;
}
}
转载于:https://www.cnblogs.com/mjsn/p/6150856.html