import java.applet.*; import java.awt.*; import java.awt.event.*; public class o_cards extends Applet implements Runnable{ int td[][] = {{1,2,3,4,5,6,7,8},{0,0,0,0,0,0,0,0}}; int crx[] = new int[7]; int cry[] = new int[7]; int che[] = new int[8]; int sw,mn; Image im[] = new Image[7]; int cx,cy,cn,ss; int mx,my,px,py; Thread th = null; Image os; Graphics og; public void init(){ os = createImage(615,180); og = os.getGraphics(); setBackground(Color.white); for(int i = 0;i < 7;i ++){ im[i] = getImage(getDocumentBase(),"Picture/mk"+(i+1)+".gif"); } addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ px = (e.getX()-15) / 75; py = (e.getY()-15) / 75; if(sw == 0){ if(td[py][px] != 0){ sw = 1; mn = td[py][px]; td[py][px] = 0; } }else{ if(td[py][px] == 0){ sw = 0; td[py][px] = mn; } } repaint(); } } ); addMouseMotionListener( new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e){ mx = e.getX() - 30; my = e.getY() - 20; repaint(); } } ); } public void paint(Graphics g){ og.setColor(Color.white); og.fillRect(0,0,615,180); og.setColor(Color.black); for(int i1 = 0;i1 < 8;i1 ++){ og.drawRect(i1*75+10,85,70,70); } for(int i1 = 0;i1 < 8;i1 ++){ for(int i2 = 0;i2 < 2;i2 ++){ if(td[i2][i1] != 0){ c_draw(i1*75+15,i2*75+15,td[i2][i1]); } } } if(sw == 1){ c_draw(mx,my,mn); } for(int i0 = 0;i0 < 8;i0 ++){ if(td[1][i0] == 0){ che[i0] = 0; }else if(td[1][i0] < 5){ che[i0] = -1; }else{ che[i0] = 1; } } for(int i1 = 0;i1 < 8;i1 ++){ if(che[i1] != 0){ switch(td[1][i1]){ case 1 : if(i1 < 6){ if((che[i1+1] == 1) && (che[i1+2] == 1)){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } }else{ og.setColor(Color.red); } break; case 2 : if(i1 < 6){ if(che[i1+1] * che[i1+2] < 0){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } }else{ og.setColor(Color.red); } break; case 3 : if((i1 > 0) && (i1 < 7)){ if((che[i1-1] == che[i1+1]) && (che[i1-1] != 0)){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } }else{ og.setColor(Color.red); } break; case 4 : if(i1 < 6){ ss = 0; for(int i2 = 0;i2 < (7-i1);i2 ++){ if(che[i1+i2+1] == 1)ss ++; } if(ss == 2){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } }else{ og.setColor(Color.red); } break; case 5 : if((i1 > 0) && (i1 < 7)){ if((che[i1-1] == che[i1+1]) && (che[i1-1] != 0)){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } }else{ og.setColor(Color.red); } break; case 6 : if(i1 > 0){ if(che[i1-1] == -1){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } }else{ og.setColor(Color.red); } break; case 7 : if(i1 < 6){ if(che[i1+1]*che[i1+2] > 0){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } }else{ og.setColor(Color.red); } break; case 8 : if(i1 > 0){ if(che[i1-1] == 1){ og.setColor(Color.blue); }else{ og.setColor(Color.red); } }else{ og.setColor(Color.red); } break; default : break; } og.drawRect(i1*75+10,85,70,70); og.drawRect(i1*75+9,84,72,72); } } g.drawImage(os,0,0,this); } public void c_draw(int x,int y,int n){ cx = x ; cy = y ; cn = n; crx[0] = cx ; cry[0] = cy ; crx[1] = cx+30 ; cry[1] = cy ; crx[2] = cx+45 ; cry[2] = cy+15 ; crx[3] = cx+60 ; cry[3] = cy+15 ; crx[4] = cx+60 ; cry[4] = cy+40 ; crx[5] = cx ; cry[5] = cy+40 ; crx[6] = cx ; cry[6] = cy ; if(cn < 5){ og.setColor(Color.red); }else{ og.setColor(Color.blue); } og.fillPolygon(crx,cry,7); cry[4] = cy+60 ; cry[5] = cy+60; og.setColor(Color.black); og.drawPolygon(crx,cry,7); og.setFont(new Font("Century",Font.BOLD,12)); og.setColor(Color.white); og.drawString("-"+cn+"-",cx+10,cy+15); switch(cn){ case 1 : og.drawImage(im[0],cx+1,cy+41,this);break; case 2 : og.drawImage(im[1],cx+1,cy+41,this);break; case 3 : og.drawImage(im[2],cx+1,cy+41,this);break; case 4 : og.drawImage(im[3],cx+1,cy+41,this);break; case 5 : og.drawImage(im[2],cx+1,cy+41,this);break; case 6 : og.drawImage(im[4],cx+1,cy+41,this);break; case 7 : og.drawImage(im[5],cx+1,cy+41,this);break; case 8 : og.drawImage(im[6],cx+1,cy+41,this);break; default : break; } } public void start(){ if(th == null){ th = new Thread(this); th.start(); } } public void stop(){ th = null; } public void run(){ while(th != null){ try{ Thread.sleep(100); } catch (InterruptedException e){ } } } public void update( Graphics g ){ paint( g ) ; } }