| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1148 人关注过本帖
标题:【向高手请教】怎样把一个游戏连接到一个窗体中
只看楼主 加入收藏
wwjun
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-9
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:2 
【向高手请教】怎样把一个游戏连接到一个窗体中
我做了一个窗体,里面有个“连连看”的按钮,想在按下按钮后就弹出连连看这个游戏。。。游戏代码也在网上找到了。。现向高手请教如何实现这个接口

窗体代码

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;


class ct extends JFrame implements ActionListener {

    static ct frm = new ct();
    static JPanel panel = new JPanel(){
        public void paintComponent(Graphics g) {
            ImageIcon icon = new ImageIcon("Blue hills.jpg");
            g.drawImage(icon.getImage(), 0, 0, this.getWidth(), this.getHeight(), this);
        }
    };
    static JMenuBar mb = new JMenuBar();
    static JMenu menu0 = new JMenu("玩家");
    static JMenu menu1 = new JMenu("编辑");
    static JMenu menu2 = new JMenu("查看");
    static JMenu menu3 = new JMenu("工具");
    static JMenu menu4 = new JMenu("帮助");

    static JMenuItem mi0_1 = new JMenu("玩家信息");
    static JMenuItem mi0_2 = new JMenu("注销");
    static JMenuItem mi0_3 = new JMenu("资料设置");
    static JMenuItem mi0_4 = new JMenu("积分");
    static JMenuItem mi0_5 = new JMenuItem("关闭");

    static JMenuItem mi1_1 = new JMenu("撤销");
    static JMenuItem mi1_2 = new JMenu("剪切");
    static JMenuItem mi1_3 = new JMenu("复制");
    static JMenuItem mi1_4 = new JMenu("粘贴");
    static JMenuItem mi1_5 = new JMenu("全选");

    static JMenuItem mi2_1 = new JMenuItem("刷新");

    static JMenuItem mi3_1 = new JMenu("游戏设置");
    static JMenuItem mi3_2 = new JMenu("选项");

    static JMenuItem mi4_1 = new JMenu("帮助主题");
    static JMenuItem mi4_2 = new JMenu("关于");

    static JLabel lab = new JLabel("游戏大厅", JLabel.CENTER);

    static JButton btn1 = new JButton("连    看");
    static JButton btn2 = new JButton("俄罗斯方块");
    static JButton btn3 = new JButton("猜      拳");
    static JButton btn4 = new JButton("猜      数");
   


    public static void initGUI() {
        frm.setTitle("游戏大厅");
        btn1.setBounds(400, 100, 100, 30);
        btn2.setBounds(550, 100, 100, 30);
        btn3.setBounds(700, 100, 100, 30);
        btn4.setBounds(850, 100, 100, 30);
        frm.add(btn1);
        frm.add(btn2);
        frm.add(btn3);
        frm.add(btn4);
        mb.add(menu0);
        mb.add(menu1);
        mb.add(menu2);
        mb.add(menu3);
        mb.add(menu4);
        menu0.add(mi0_1);
        menu0.add(mi0_2);
        menu0.add(mi0_3);
        menu0.add(mi0_4);
        menu0.add(mi0_5);
        menu1.add(mi1_1);
        menu1.add(mi1_2);
        menu1.add(mi1_3);
        menu1.add(mi1_4);
        menu1.add(mi1_5);
        menu2.add(mi2_1);
        menu3.add(mi3_1);
        menu3.add(mi3_2);
        menu4.add(mi4_1);
        menu4.add(mi4_2);
        mi0_5.addActionListener(frm);
        mi1_1.addActionListener(frm);
        mi1_2.addActionListener(frm);
        mi1_3.addActionListener(frm);
        mi1_4.addActionListener(frm);
        mi1_5.addActionListener(frm);
        mi2_1.addActionListener(frm);
        mi3_1.addActionListener(frm);
        mi3_2.addActionListener(frm);
        mi4_1.addActionListener(frm);
        mi4_2.addActionListener(frm);
        panel.add(lab);
//        panel.setBackground(Color.yellow);
        frm.getContentPane().add(panel);
        frm.setSize(1366, 740);
        frm.setJMenuBar(mb);
        frm.setVisible(true);
        frm.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    public static void main(String args[]) {
        initGUI();
        frm.setVisible(false);
        frm.setBackground(Color.yellow);
        frm.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        Object mi = e.getSource();
        if (mi == mi0_5){
            System.exit(0);
            }
        else if (mi == mi2_1) {
            frm.setBackground(Color.pink);// 使窗体改变背景颜色
       }
      

    }

    public void windowClosing(WindowEvent e) {
        frm.dispose();
        System.exit(0);
    }
}


游戏代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class lianliankan implements ActionListener
{
JFrame mainFrame; //主面板
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组
JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮
JLabel fractionLable=new JLabel("0"); //分数标签
JButton firstButton,secondButton; //分别记录两次被选中的按钮
int grid[][] = new int[8][7];//储存游戏按钮位置
static boolean pressInformation=false; //判断是否有按钮被选中
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标
int i,j,k,n;//消除方法控制
public void init(){
mainFrame=new JFrame("JKJ连连看");
thisContainer = mainFrame.getContentPane();
thisContainer.setLayout(new BorderLayout());
centerPanel=new JPanel();
southPanel=new JPanel();
northPanel=new JPanel();
thisContainer.add(centerPanel,"Center");
thisContainer.add(southPanel,"South");
thisContainer.add(northPanel,"North");
centerPanel.setLayout(new GridLayout(6,5));
for(int cols = 0;cols < 6;cols++){
for(int rows = 0;rows < 5;rows++ ){
diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1]));
diamondsButton[cols][rows].addActionListener(this);
centerPanel.add(diamondsButton[cols][rows]);
}
}
exitButton=new JButton("退出");
exitButton.addActionListener(this);
resetButton=new JButton("重列");
resetButton.addActionListener(this);
newlyButton=new JButton("再来一局");
newlyButton.addActionListener(this);
southPanel.add(exitButton);
southPanel.add(resetButton);
southPanel.add(newlyButton);
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));
northPanel.add(fractionLable);
mainFrame.setBounds(280,100,500,450);
mainFrame.setVisible(true);
}
public void randomBuild() {
int randoms,cols,rows;
for(int twins=1;twins<=15;twins++) {
randoms=(int)(Math.random()*25+1);
for(int alike=1;alike<=2;alike++) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
while(grid[cols][rows]!=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
}
this.grid[cols][rows]=randoms;
}
}
}
public void fraction(){
fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100));
}
public void reload() {
int save[] = new int[30];
int n=0,cols,rows;
int grid[][]= new int[8][7];
for(int i=0;i<=6;i++) {
for(int j=0;j<=5;j++) {
if(this.grid[i][j]!=0) {
save[n]=this.grid[i][j];
n++;
}
}
}
n=n-1;
this.grid=grid;
while(n>=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
while(grid[cols][rows]!=0) {
cols=(int)(Math.random()*6+1);
rows=(int)(Math.random()*5+1);
}
this.grid[cols][rows]=save[n];
n--;
}
mainFrame.setVisible(false);
pressInformation=false; //这里一定要将按钮点击信息归为初始
init();
for(int i = 0;i < 6;i++){
for(int j = 0;j < 5;j++ ){
if(grid[i+1][j+1]==0)
diamondsButton[i][j].setVisible(false);
}
}
}
public void estimateEven(int placeX,int placeY,JButton bz) {
if(pressInformation==false) {
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
pressInformation=true;
}
else {
x0=x;
y0=y;
fristMsg=secondMsg;
firstButton=secondButton;
x=placeX;
y=placeY;
secondMsg=grid[x][y];
secondButton=bz;
if(fristMsg==secondMsg && secondButton!=firstButton){
xiao();
}
}
}
public void xiao() { //相同的情况下能不能消去。仔细分析,不一条条注释
if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))){ //判断是否相邻
remove();
}
else{
for (j=0;j<7;j++ ) {
if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空
if (y>j) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边
for (i=y-1;i>=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0) {
k=0;
break;
}
else{ k=1; } //K=1说明通过了第一次验证
}
if (k==1) {
linePassOne();
}
}
if (y<j){ //如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边
for (i=y+1;i<=j ;i++ ){ //判断第二按钮左侧直到第一按钮中间有没有按钮
if (grid[x][i]!=0){
k=0;
break;
}
else { k=1; }
}
if (k==1){
linePassOne();
}
}
if (y==j ) {
linePassOne();
}
}
if (k==2) {
if (x0==x) {
remove();
}
if (x0<x) {
for (n=x0;n<=x-1;n++ ) {
if (grid[n][j]!=0) {
k=0;
break;
}
if(grid[n][j]==0 && n==x-1) {
remove();
}
}
}
if (x0>x) {
for (n=x0;n>=x+1 ;n-- ) {
if (grid[n][j]!=0) {
k=0;
break;
}
if(grid[n][j]==0 && n==x+1) {
remove();
}
}
}
}
}
for (i=0;i<8;i++ ) { //列
if (grid[i][y0]==0) {
if (x>i) {
for (j=x-1;j>=i ;j-- ) {
if (grid[j][y]!=0) {
k=0;
break;
}
else { k=1; }
}
if (k==1) {
rowPassOne();
}
}
if (x<i) {
for (j=x+1;j<=i;j++ ) {
if (grid[j][y]!=0) {
k=0;
break;
}
else { k=1; }
}
if (k==1) {
rowPassOne();
}
}
if (x==i) {
rowPassOne();
}
}
if (k==2){
if (y0==y) {
remove();
}
if (y0<y) {
for (n=y0;n<=y-1 ;n++ ) {
if (grid[i][n]!=0) {
k=0;
break;
}
if(grid[i][n]==0 && n==y-1) {
remove();
}
}
}
if (y0>y) {
for (n=y0;n>=y+1 ;n--) {
if (grid[i][n]!=0) {
k=0;
break;
}
if(grid[i][n]==0 && n==y+1) {
remove();
}
}
}
}
}
}
}
public void linePassOne(){
if (y0>j){ //第一按钮同行空按钮在左边
for (i=y0-1;i>=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮
if (grid[x0][i]!=0) {
k=0;
break;
}
else { k=2; } //K=2说明通过了第二次验证
}
}
if (y0<j){ //第一按钮同行空按钮在与第二按钮之间
for (i=y0+1;i<=j ;i++){
if (grid[x0][i]!=0) {
k=0;
break;
}
else{ k=2; }
}
}
}
public void rowPassOne(){
if (x0>i) {
for (j=x0-1;j>=i ;j-- ) {
if (grid[j][y0]!=0) {
k=0;
break;
}
else { k=2; }
}
}
if (x0<i) {
for (j=x0+1;j<=i ;j++ ) {
if (grid[j][y0]!=0) {
k=0;
break;
}
else { k=2; }
}
}
}
public void remove(){
firstButton.setVisible(false);
secondButton.setVisible(false);
fraction();
pressInformation=false;
k=0;
grid[x0][y0]=0;
grid[x][y]=0;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==newlyButton){
int grid[][] = new int[8][7];
this.grid = grid;
randomBuild();
mainFrame.setVisible(false);
pressInformation=false;
init();
}
if(e.getSource()==exitButton)
System.exit(0);
if(e.getSource()==resetButton)
reload();
for(int cols = 0;cols < 6;cols++){
for(int rows = 0;rows < 5;rows++ ){
if(e.getSource()==diamondsButton[cols][rows])
estimateEven(cols+1,rows+1,diamondsButton[cols][rows]);
}
}
}
public static void main(String[] args) {
lianliankan llk = new lianliankan();
llk.randomBuild();
llk.init();
}
}


搜索更多相关主题的帖子: 游戏 窗体 
2010-06-27 17:56
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:15 
btn1.addActionListener(new ActionListener(){
    public void performed(ActionEvent e){
        lianliankan llk = new lianliankan();
        llk.randomBuild();
        llk.init();
    }
});
差不多就这样。没开IDE,可能存在小错误,自己修改啊。
2010-06-28 10:32
wwjun
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-9
收藏
得分:0 
回复 2楼 linjx0123
大致OK~~谢谢~
2010-06-28 13:32
快速回复:【向高手请教】怎样把一个游戏连接到一个窗体中
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016991 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved