你能看懂吗?解决方法
发布时间:2010-06-05 12:42:02 文章来源:www.iduyao.cn 采编人员:星星草
你能看懂吗?
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GameFrame extends JFrame implements KeyListener {
private final int DEFAULT_WIDTH=500;
private final int DEFAULT_HEIGHT=700;
Random ran=new Random();
//方块形状
private int Fstate=ran.nextInt(7);
//方块状态
private int Sstate=ran.nextInt(4);
private int X=130;
private int left=130;
private int top=0;
private int[][][] shapes;
private int[]s;
private int[][]sh;
Shapes shape=new Shapes();
private JButton btnStart ,btnPause;
private boolean flag=false;
private GamePanel panel;
private int[][]map=new int[60][30];
private int tx=13;
private int ty=3;
public GameFrame()
{
shapes=shape.getShapes();
s=shapes[Fstate][Sstate];
sh=getS(s);
panel=new GamePanel();
panel.setLayout(null);
setTitle("Tetris game");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
btnStart=new JButton("开始游戏");
btnStart.addKeyListener(new KeyAdapter()
{
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER)
{
flag=true;
btnStart.requestFocus(false);
panel.requestFocus();
}
}
});
btnStart.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0) {
flag=true;
btnStart.requestFocus(false);
panel.requestFocus();
}
});
btnStart.setBounds(350, 350, 100, 30);
btnPause=new JButton("暂停");
btnPause.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0) {
flag=false;
panel.requestFocus();
}
});
btnPause.setBounds(350, 400, 100, 30);
panel.add(btnPause);
this.setLocationRelativeTo(null);
this.add(panel);
this.addKeyListener(this);
panel.addKeyListener(GameFrame.this);
GameThread gth=new GameThread();
Thread th=new Thread(gth);
th.start();
panel.add(btnStart);
}
public int[][] getS(int[]a)
{
int[][]sa=new int[4][4];
int n=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
sa[i][j]=a[n];
n++;
}
}
return sa;
}
private class GamePanel extends JPanel
{
public void paintComponent(Graphics g)
{
Graphics2D g2d=(Graphics2D)g;
g2d.setColor(Color.black);
g2d.fill3DRect(20, 20, 300, 600, true);
g2d.drawRect(350, 40, 80, 80);
for(int j=0;j<sh.length;j++)
{
for(int i=0;i<sh.length;i++)
{
if(sh[j][i]==1)
{
g2d.setColor(Color.RED);
g2d.fill3DRect(left+20+10*i, top+20+10*j, 10, 10, true);
}
}
}
for(int i=0;i<60;i++)
{
for(int j=0;j<30;j++)
{
if(map[i][j]==1)
{
g2d.setColor(Color.RED);
g2d.fill3DRect(left+20+10*i, top+20+10*j, 10, 10, true);
}
}
}
}
}
//判断是否出界
public int isOut(int x,int y)
{
int[] aa=shapes[x][y];
int[][]b=getS(aa);
for(int j=0;j<b.length;j++)
{
for(int i=0;i<b.length;i++)
{
if(b[j][i]==1)
{
if((left+20+10*i)<20||(left+30+10*i)>300)
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
myeclipse上开发j2me的错误提示怎么看(找个好多没有解决的,CSDN能人出来啊......)
对于javame的提示实在无语啊。如下
java.lang.I...
-
命令行执行java程序,含有多个包
我定义了一个java project 叫project1,
然后建立了两个package,(注意都不是jar包)
一个叫animaltestdr...
-
j2me新手问题
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
public class gamestart extends...
-
j2me中如何用代码判断两次pointerPressed之间的时间差?
j2me中如何用代码判断两次pointerPressed之间的时间差?
------解决方案---...
-
通过电脑上wap浏览器可以进入我的wap网站,但是手机不能上,为什么?
我做了wap网站,通过花生壳挂接到外网上了。
通过电脑上wap浏览器可...
-
不含声音文件,如何播放声音?塞班
今天看了一下“飞信JAVA 1.0版”,安装后,信息提示音跟电子音似的。
解压后,发现只有一堆class文件,和...
-
怎么看wtk的源码?高分求助!
我们平时使用eclipse时,点右键选open declaration,或者按F3即可查看源码。现在我建了一个J2ME Midlet工程...
-
如何使用外部js验证下拉列表是否选择
我想使用js对表单进行验证,其中有一个下拉列表,如何验证这个下拉列表在提交的时候已经做过选...
-
关于GUI的一个问题(分不多了,请谅解)
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyMouseAdap...
-
j2me socket读取服务器中文出乱码
conn = (SocketConnection) Connector.open(addr ,Connector.READ_WRITE);
conn.setSocketOpti...