连连看JAVA源代码是什么?

连连看JAVA源代码是什么?,第1张

importjavax.swing.*\x0d\x0aimportjava.awt.*\x0d\x0aimportjava.awt.event.*\x0d\x0apublicclasslianliankanimplementsActionListener\x0d\x0a{\x0d\x0aJFramemainFrame//主面板\x0d\x0aContainerthisContainer\x0d\x0aJPanelcenterPanel,southPanel,northPanel//子面板\x0d\x0aJButtondiamondsButton[][]=newJButton[6][5]//游戏按钮数组\x0d\x0aJButtonexitButton,resetButton,newlyButton//退出,重列,重新开始按钮\x0d\x0aJLabelfractionLable=newJLabel("0")//分数标签\x0d\x0aJButtonfirstButton,secondButton//分别记录两次被选中的按钮\x0d\x0aintgrid[][]=newint[8][7]//举则储存游戏按钮位置\x0d\x0astaticbooleanpressInformation=false//判断是否有按钮被选中\x0d\x0aintx0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV//游戏按钮的位置坐标\x0d\x0ainti,j,k,n//消除方法搏祥控制基答搏\x0d\x0apublicvoidinit(){\x0d\x0amainFrame=newJFrame("JKJ连连看")\x0d\x0athisContainer=mainFrame.getContentPane()\x0d\x0athisContainer.setLayout(newBorderLayout())\x0d\x0acenterPanel=newJPanel()\x0d\x0asouthPanel=newJPanel()\x0d\x0anorthPanel=newJPanel()\x0d\x0athisContainer.add(centerPanel,"Center")\x0d\x0athisContainer.add(southPanel,"South")\x0d\x0athisContainer.add(northPanel,"North")\x0d\x0acenterPanel.setLayout(newGridLayout(6,5))\x0d\x0afor(intcols=0cols=0){\x0d\x0acols=(int)(Math.random()*6+1)\x0d\x0arows=(int)(Math.random()*5+1)\x0d\x0awhile(grid[cols][rows]!=0){\x0d\x0acols=(int)(Math.random()*6+1)\x0d\x0arows=(int)(Math.random()*5+1)\x0d\x0a}\x0d\x0athis.grid[cols][rows]=save[n]\x0d\x0an--\x0d\x0a}\x0d\x0amainFrame.setVisible(false)\x0d\x0apressInformation=false//这里一定要将按钮点击信息归为初始\x0d\x0ainit()\x0d\x0afor(inti=0ij){//如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边\x0d\x0afor(i=y-1i>=ji--){//判断第二按钮左侧直到第一按钮中间有没有按钮\x0d\x0aif(grid[x][i]!=0){\x0d\x0ak=0\x0d\x0abreak\x0d\x0a}\x0d\x0aelse//K=1说明通过了第一次验证\x0d\x0a}\x0d\x0aif(k==1){\x0d\x0alinePassOne()\x0d\x0a}\x0d\x0a}\x0d\x0aif(yx){\x0d\x0afor(n=x0n>=x+1n--){\x0d\x0aif(grid[n][j]!=0){\x0d\x0ak=0\x0d\x0abreak\x0d\x0a}\x0d\x0aif(grid[n][j]==0&&n==x+1){\x0d\x0aremove()\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0afor(i=0ii){\x0d\x0afor(j=x-1j>=ij--){\x0d\x0aif(grid[j][y]!=0){\x0d\x0ak=0\x0d\x0abreak\x0d\x0a}\x0d\x0aelse\x0d\x0a}\x0d\x0aif(k==1){\x0d\x0arowPassOne()\x0d\x0a}\x0d\x0a}\x0d\x0aif(xy){\x0d\x0afor(n=y0n>=y+1n--){\x0d\x0aif(grid[i][n]!=0){\x0d\x0ak=0\x0d\x0abreak\x0d\x0a}\x0d\x0aif(grid[i][n]==0&&n==y+1){\x0d\x0aremove()\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0apublicvoidlinePassOne(){\x0d\x0aif(y0>j){//第一按钮同行空按钮在左边\x0d\x0afor(i=y0-1i>=ji--){//判断第一按钮同左侧空按钮之间有没按钮\x0d\x0aif(grid[x0][i]!=0){\x0d\x0ak=0\x0d\x0abreak\x0d\x0a}\x0d\x0aelse//K=2说明通过了第二次验证\x0d\x0a}\x0d\x0a}\x0d\x0aif(y0i){\x0d\x0afor(j=x0-1j>=ij--){\x0d\x0aif(grid[j][y0]!=0){\x0d\x0ak=0\x0d\x0abreak\x0d\x0a}\x0d\x0aelse\x0d\x0a}\x0d\x0a}\x0d\x0aif(x0 回答于 2022-12-14

连连看java源代码 2007-11-01 02:25 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 = 0cols <6cols++){

for(int rows = 0rows <5rows++ ){

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=1twins<=15twins++) {

randoms=(int)(Math.random()*25+1)

for(int alike=1alike<=2alike++) {

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=0i<=6i++) {

for(int j=0j<=5j++) {

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 = 0i <6i++){

for(int j = 0j <5j++ ){

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=0j<7j++ ) {

if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空

if (y>j) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边

for (i=y-1i>=ji-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮

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+1i<=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=x0n<=x-1n++ ) {

if (grid[n][j]!=0) {

k=0

break

}

if(grid[n][j]==0 &&n==x-1) {

remove()

}

}

}

if (x0>x) {

for (n=x0n>=x+1 n-- ) {

if (grid[n][j]!=0) {

k=0

break

}

if(grid[n][j]==0 &&n==x+1) {

remove()

}

}

}

}

}

for (i=0i<8i++ ) { //列

if (grid[i][y0]==0) {

if (x>i) {

for (j=x-1j>=i j-- ) {

if (grid[j][y]!=0) {

k=0

break

}

else { k=1}

}

if (k==1) {

rowPassOne()

}

}

if (x<i) {

for (j=x+1j<=ij++ ) {

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=y0n<=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=y0n>=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-1i>=j i-- ){ //判断第一按钮同左侧空按钮之间有没按钮

if (grid[x0][i]!=0) {

k=0

break

}

else { k=2} //K=2说明通过了第二次验证

}

}

if (y0<j){ //第一按钮同行空按钮在与第二按钮之间

for (i=y0+1i<=j i++){

if (grid[x0][i]!=0) {

k=0

break

}

else{ k=2}

}

}

}

public void rowPassOne(){

if (x0>i) {

for (j=x0-1j>=i j-- ) {

if (grid[j][y0]!=0) {

k=0

break

}

else { k=2}

}

}

if (x0<i) {

for (j=x0+1j<=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 = 0cols <6cols++){

for(int rows = 0rows <5rows++ ){

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()

}

}

//old 998 lines

//new 318 lines


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12313697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存