Cờ chó cắn chắc là cờ đơn giản nhất mà tôi từng chơi khi còn nhỏ và ở bất cứ đâu cũng có thể chơi được. nó còn đơn giản hơn là tic tac toe nữa đấy, và hôm nay tôi sẽ hướng dẫn viết một bàn cờ chó cắn đơn giản. đầu tiên là quân cờ chó cắn, gồm có các thông tin sau:
tree.java
C:\Users\thanhliem\Documents\NetBeansProjects\Tree\src\tree.java |
10
11 public class tree {
12
13 int position,color;
14
15 public tree(int pos,int color){
16 this.position=pos;
17 this.color=color;}
18 }
19
Còn đây là file banco.java dùng để tiến hành các lệnh vẽ theo game, điều kiện trò chơi, cách chơi….
banco.java
C:\Users\thanhliem\Documents\NetBeansProjects\Tree\src\banco.java |
import javax.microedition.lcdui.*;
import java.util.*;
public class banco extends Canvas {
Midlet m;
int[][] moc;
boolean[] free=new boolean[5];
int w,h,dx,dy,k;
boolean mot=true,finish=false,win=false;
tree[] quan;
Random rd=new Random();
public banco(Midlet m){
setFullScreenMode(true);
w=getWidth(); h=getHeight();
dx=(w-128)/2;
dy=(h-128)/2;
moc=new int[5][2];
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
moc[i*2+j][0]=i*128;
moc[i*2+j][1]=j*128;}}
moc[4][0]=64;
moc[4][1]=64;
quan=new tree[4];
for(int i=0;i<quan.length;i++){
free[i]=false;
quan[i]=new tree(i,i%2==0?0x00f000:0x0000f0);}
free[4]=true;
this.m=m;}
public void paint(Graphics g){
g.setColor(0);
g.fillRect(0,0,w,h);
vebanco(g);
vequanco(g);
g.setColor(0xf000f0);
if(finish)
g.drawString(win?"you win!":"you lose!",w/2,h,Graphics.BOTTOM|Graphics.HCENTER);
g.drawString("nhấn 5 để di chuyển.",w/2,0,Graphics.TOP|Graphics.HCENTER);
g.drawString("nhấn * để thay đổi đối tượng",w/2,0+g.getFont().getHeight(),Graphics.TOP|Graphics.HCENTER);
repaint();
}
protected void keyPressed(int k){
int focus=mot?0:2,move=free();
if(!finish)
if(k==KEY_NUM5||k==-5)
if(move(focus,move)){
auto();}
else if(move(focus==0?2:0,move)){
auto();
}
else{finish=true; win=false;}
if(k==KEY_STAR)mot=!mot;}
void auto(){
int move=free();
int focus=rd.nextInt()%2==0?1:3;
if(move(focus,move)){}else{
if(!move(focus==1?3:1,move)){
finish=true;
win=true;}}}
void vebanco(Graphics g){
g.setColor(0xf0f000);
g.drawLine(dx+moc[0][0],dy+moc[0][1],dx+moc[3][0],dy+moc[3][1]);
g.drawLine(dx+moc[1][0], dy+moc[1][1],dx+moc[2][0], dy+moc[2][1]);
g.drawRect(dx, dy, 128, 128);
g.drawString("chó",dx+64,dy,Graphics.BASELINE|Graphics.HCENTER);
}
void vequanco(Graphics g){
int focus=mot?0:2;
for(int i=0;i<4;i++){
int pos=quan[i].position;
if(i==focus){
g.setColor(0xf00000);
g.fillArc(dx+moc[pos][0]-9, dy+moc[pos][1]-9, 18, 18, 0, 360);}
g.setColor(quan[i].color);
g.fillArc(dx+moc[pos][0]-8, dy+moc[pos][1]-8, 16, 16, 0, 360);
}
}
boolean cango(int pos,int npos){
if(pos==1&&npos==2)return false;
if(pos==2&&npos==1)return false;
if(pos==0&&npos==3)return false;
if(pos==3&&npos==0)return false;
if(pos==0&&npos==2)return false;
if(pos==2&&npos==0)return false;
return true;}
int free(){
for(int i=0;i<5;i++){
if(free[i])return i;}
return 0;}
boolean move(int pos,int npos){
if(cango(quan[pos].position,npos)){
free[quan[pos].position]=true;
quan[pos].position=npos;
free[quan[pos].position]=false;
return true;}
return false;}
}
Và cũng cần có file Midlet.java để ứng dụng có thể hiện thị được. Cái này thì cũng đơn giản và quen quá rồi.
Midlet.java
C:\Users\thanhliem\Documents\NetBeansProjects\Tree\src\Midlet.java |
public class Midlet extends MIDlet {
public void startApp() {
Display.getDisplay(this).setCurrent(new banco(this));
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
source
file jar
Không có nhận xét nào:
Đăng nhận xét