「黑白翻转游戏java」黑白转换游戏
本篇文章给大家谈谈黑白翻转游戏java,以及黑白转换游戏对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、通过Java控制台程序完成一个五子棋游戏,能够实现黑白子交互下棋,程序自动判断输赢(需要完成判断输赢
- 2、求几款经典的横屏JAVA游戏~要横屏的!240×320
- 3、求例如俄罗斯方块,五子棋,黑白棋等小游戏的JAVA版
- 4、紧急!!!用java做一个小游戏有窗口的。。
- 5、java黑白棋界面怎样编写?
- 6、求用Java编程的黑白棋代码???急用!!!
通过Java控制台程序完成一个五子棋游戏,能够实现黑白子交互下棋,程序自动判断输赢(需要完成判断输赢
import java.util.Scanner;
public class FiveChessGame {
public static void display(char[][] arr) {// 图形显示函数
System.out.print(" ");
for (char i = '0'; i = '9'; i++)
// 打印行号0~9
System.out.print(i + " ");
for (char j = 'a'; j = 'f'; j++)
// 打印行号a~f
System.out.print(j + " ");
System.out.println();
char c = '0';
for (int i = 0; i 10; i++) {
System.out.print(c++ + " ");
for (int j = 0; j 16; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
c = 'a';
for (int i = 10; i 16; i++) {
System.out.print(c++ + " ");
for (int j = 0; j 16; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
public static int getNum(char c) {
int num;
switch (c) {
case '0':
num = 0;
break;
case '1':
num = 1;
break;
case '2':
num = 2;
break;
case '3':
num = 3;
break;
case '4':
num = 4;
break;
case '5':
num = 5;
break;
case '6':
num = 6;
break;
case '7':
num = 7;
break;
case '8':
num = 8;
break;
case '9':
num = 9;
break;
case 'a':
case 'A':
num = 10;
break;
case 'b':
case 'B':
num = 11;
break;
case 'c':
case 'C':
num = 12;
break;
case 'd':
case 'D':
num = 13;
break;
case 'e':
case 'E':
num = 14;
break;
case 'f':
case 'F':
num = 15;
break;
default:
System.out.println("输入有错误!");
return -1;
}
return num;
}
public static int isWinner(char c, char[][] arr, int a, int b) {
if (c == '@') {
int count = 0;
for (int i = 0; i 16; i++) {
if (arr[a][i] == '@') {
count++;
if (count = 5) {
return 1;
}
} else {
count = 0;
}
}
count = 0;
for (int i = 0; i 16; i++) {
if (arr[i][b] == '@') {
count++;
if (count = 5) {
return 1;
}
} else {
count = 0;
}
}
count = 0;
if (a = b) {
int j = 0;
for (int i = a - b; i = 15 - a + b; i++) {
if (arr[i][j] == '@') {
count++;
j++;
if (count = 5) {
return 1;
}
} else {
count = 0;
j++;
}
}
} else {
int j = 0;
for (int i = b - a; i = 15 - b + a; i++) {
if (arr[j][i] == '@') {
count++;
j++;
if (count = 5) {
return 1;
}
} else {
count = 0;
j++;
}
}
}
int j = a + b;
count = 0;
if (a + b = 15) {
for (int i = 0; i = a + b; i++) {
if (arr[i][j] == '@') {
count++;
j--;
if (count = 5) {
return 1;
}
} else {
count = 0;
j--;
}
}
} else {
j = 15;
for (int i = a + b - 15; i = 15; i++) {
if (arr[i][j] == '@') {
count++;
j--;
if (count = 5) {
return 1;
}
} else {
count = 0;
j--;
}
}
}
} else {// 判断白色胜
int count = 0;
for (int i = 0; i 16; i++) {
if (arr[a][i] == 'O') {
count++;
if (count = 5) {
return 2;
}
} else {
count = 0;
}
}
count = 0;
for (int i = 0; i 16; i++) {
if (arr[i][b] == 'O') {
count++;
if (count = 5) {
return 2;
}
} else {
count = 0;
}
}
count = 0;
if (a = b) {
int j = 0;
for (int i = a - b; i = 15 - a + b; i++) {
if (arr[i][j] == 'O') {
count++;
j++;
if (count = 5) {
return 2;
}
} else {
count = 0;
j++;
}
}
} else {
int j = 0;
for (int i = b - a; i = 15 - b + a; i++) {
if (arr[j][i] == 'O') {
count++;
j++;
if (count = 5) {
return 2;
}
} else {
count = 0;
j++;
}
}
}
int j = a + b;
count = 0;
if (a + b = 15) {
for (int i = 0; i = a + b; i++) {
if (arr[i][j] == 'O') {
count++;
j--;
if (count = 5) {
return 2;
}
} else {
count = 0;
j--;
}
}
} else {
j = 15;
for (int i = a + b - 15; i = 15; i++) {
if (arr[i][j] == 'O') {
count++;
j--;
if (count = 5) {
return 2;
}
} else {
count = 0;
j--;
}
}
}
}
return 0;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
char[][] arr = new char[16][16];
for (int i = 0; i 16; i++)
// 二维数组初始化
for (int j = 0; j 16; j++)
arr[i][j] = '.';
display(arr);
int i = 0;
while (true) {
if (i % 2 == 0) {
System.out.println("请黑方落子:");
String in = sc.next();
char c1 = in.charAt(0);
char c2 = in.charAt(1);
int a = getNum(c1);
int b = getNum(c2);
if (arr[a][b] != '.') {
System.out.println("该位置已经有棋子,请重新输入!");
} else {
arr[a][b] = '@';
display(arr);
int result = isWinner('@', arr, a, b);
if (result == 1) {
System.out.println("黑方获胜!");
return;
}
i++;
}
} else {
System.out.println("请白方落子:");
String in = sc.next();
char c1 = in.charAt(0);
char c2 = in.charAt(1);
int a = getNum(c1);
int b = getNum(c2);
if (arr[a][b] != '.') {
System.out.println("该位置已经有棋子,请重新输入!");
} else {
arr[a][b] = 'O';
display(arr);
int result = isWinner('O', arr, a, b);
if (result == 2) {
System.out.println("白方获胜!");
return;
}
i++;
}
}
}
}
}
求几款经典的横屏JAVA游戏~要横屏的!240×320
你看这个几个可不可以啊~~
『完整版』骑士传说之黑暗边缘(sis) 超棒的3D格斗游戏(音乐画面极佳支持
横屏) - 66uuu免费手机游戏下载
[完全版sis游戏]-龙鸟战机U.Mobile.Game.Dragon.Bird.v1.01汉化版
[s60v3] - 66uuu免费手机游戏下载
求例如俄罗斯方块,五子棋,黑白棋等小游戏的JAVA版
俄罗斯方块——java源代码提供
import java.awt.*;
import java.awt.event.*;
//俄罗斯方块类
public class ERS_Block extends Frame{
public static boolean isPlay=false;
public static int level=1,score=0;
public static TextField scoreField,levelField;
public static MyTimer timer;
GameCanvas gameScr;
public static void main(String[] argus){
ERS_Block ers = new ERS_Block("俄罗斯方块游戏 V1.0 Author:Vincent");
WindowListener win_listener = new WinListener();
ers.addWindowListener(win_listener);
}
//俄罗斯方块类的构造方法
ERS_Block(String title){
super(title);
setSize(600,480);
setLayout(new GridLayout(1,2));
gameScr = new GameCanvas();
gameScr.addKeyListener(gameScr);
timer = new MyTimer(gameScr);
timer.setDaemon(true);
timer.start();
timer.suspend();
add(gameScr);
Panel rightScr = new Panel();
rightScr.setLayout(new GridLayout(2,1,0,30));
rightScr.setSize(120,500);
add(rightScr);
//右边信息窗体的布局
MyPanel infoScr = new MyPanel();
infoScr.setLayout(new GridLayout(4,1,0,5));
infoScr.setSize(120,300);
rightScr.add(infoScr);
//定义标签和初始值
Label scorep = new Label("分数:",Label.LEFT);
Label levelp = new Label("级数:",Label.LEFT);
scoreField = new TextField(8);
levelField = new TextField(8);
scoreField.setEditable(false);
levelField.setEditable(false);
infoScr.add(scorep);
infoScr.add(scoreField);
infoScr.add(levelp);
infoScr.add(levelField);
scorep.setSize(new Dimension(20,60));
scoreField.setSize(new Dimension(20,60));
levelp.setSize(new Dimension(20,60));
levelField.setSize(new Dimension(20,60));
scoreField.setText("0");
levelField.setText("1");
//右边控制按钮窗体的布局
MyPanel controlScr = new MyPanel();
controlScr.setLayout(new GridLayout(5,1,0,5));
rightScr.add(controlScr);
//定义按钮play
Button play_b = new Button("开始游戏");
play_b.setSize(new Dimension(50,200));
play_b.addActionListener(new Command(Command.button_play,gameScr));
//定义按钮Level UP
Button level_up_b = new Button("提高级数");
level_up_b.setSize(new Dimension(50,200));
level_up_b.addActionListener(new Command(Command.button_levelup,gameScr));
//定义按钮Level Down
Button level_down_b =new Button("降低级数");
level_down_b.setSize(new Dimension(50,200));
level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr));
//定义按钮Level Pause
Button pause_b =new Button("游戏暂停");
pause_b.setSize(new Dimension(50,200));
pause_b.addActionListener(new Command(Command.button_pause,gameScr));
//定义按钮Quit
Button quit_b = new Button("退出游戏");
quit_b.setSize(new Dimension(50,200));
quit_b.addActionListener(new Command(Command.button_quit,gameScr));
controlScr.add(play_b);
controlScr.add(level_up_b);
controlScr.add(level_down_b);
controlScr.add(pause_b);
controlScr.add(quit_b);
setVisible(true);
gameScr.requestFocus();
}
}
//重写MyPanel类,使Panel的四周留空间
class MyPanel extends Panel{
public Insets getInsets(){
return new Insets(30,50,30,50);
}
}
//游戏画布类
class GameCanvas extends Canvas implements KeyListener{
final int unitSize = 30; //小方块边长
int rowNum; //正方格的行数
int columnNum; //正方格的列数
int maxAllowRowNum; //允许有多少行未削
int blockInitRow; //新出现块的起始行坐标
int blockInitCol; //新出现块的起始列坐标
int [][] scrArr; //屏幕数组
Block b; //对方快的引用
//画布类的构造方法
GameCanvas(){
rowNum = 15;
columnNum = 10;
maxAllowRowNum = rowNum - 2;
b = new Block(this);
blockInitRow = rowNum - 1;
blockInitCol = columnNum/2 - 2;
scrArr = new int [32][32];
}
//初始化屏幕,并将屏幕数组清零的方法
void initScr(){
for(int i=0;irowNum;i++)
for (int j=0; jcolumnNum;j++)
scrArr[j]=0;
b.reset();
repaint();
}
//重新刷新画布方法
public void paint(Graphics g){
for(int i = 0; i rowNum; i++)
for(int j = 0; j columnNum; j++)
drawUnit(i,j,scrArr[j]);
}
//画方块的方法
public void drawUnit(int row,int col,int type){
scrArr[row][col] = type;
Graphics g = getGraphics();
tch(type){ //表示画方快的方法
case 0: g.setColor(Color.black);break; //以背景为颜色画
case 1: g.setColor(Color.blue);break; //画正在下落的方块
case 2: g.setColor(Color.magenta);break; //画已经落下的方法
}
g.fill3DRect(col*unitSize,getSize().height-(row+1)*unitSize,unitSize,unitSize,true);
g.dispose();
}
public Block getBlock(){
return b; //返回block实例的引用
}
//返回屏幕数组中(row,col)位置的属性值
public int getScrArrXY(int row,int col){
if (row 0 || row = rowNum || col 0 || col = columnNum)
return(-1);
else
return(scrArr[row][col]);
}
//返回新块的初始行坐标方法
public int getInitRow(){
return(blockInitRow); //返回新块的初始行坐标
}
//返回新块的初始列坐标方法
public int getInitCol(){
return(blockInitCol); //返回新块的初始列坐标
}
//满行删除方法
void deleteFullLine(){
int full_line_num = 0;
int k = 0;
for (int i=0;irowNum;i++){
boolean isfull = true;
L1:for(int j=0;jcolumnNum;j++)
if(scrArr[j] == 0){
k++;
isfull = false;
break L1;
}
if(isfull) full_line_num++;
if(k!=0 k-1!=i !isfull)
for(int j = 0; j columnNum; j++){
if (scrArr[j] == 0)
drawUnit(k-1,j,0);
else
drawUnit(k-1,j,2);
scrArr[k-1][j] = scrArr[j];
}
}
for(int i = k-1 ;i rowNum; i++){
for(int j = 0; j columnNum; j++){
drawUnit(i,j,0);
scrArr[j]=0;
}
}
ERS_Block.score += full_line_num;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
//判断游戏是否结束方法
boolean isGameEnd(){
for (int col = 0 ; col columnNum; col ++){
if(scrArr[maxAllowRowNum][col] !=0)
return true;
}
return false;
}
public void keyTyped(KeyEvent e){
}
public void keyReleased(KeyEvent e){
}
//处理键盘输入的方法
public void keyPressed(KeyEvent e){
if(!ERS_Block.isPlay)
return;
tch(e.getKeyCode()){
case KeyEvent.VK_DOWN:b.fallDown();break;
case KeyEvent.VK_LEFT:b.leftMove();break;
case KeyEvent.VK_RIGHT:b.rightMove();break;
case KeyEvent.VK_SPACE:b.leftTurn();break;
}
}
}
//处理控制类
class Command implements ActionListener{
static final int button_play = 1; //给按钮分配编号
static final int button_levelup = 2;
static final int button_leveldown = 3;
static final int button_quit = 4;
static final int button_pause = 5;
static boolean pause_resume = true;
int curButton; //当前按钮
GameCanvas scr;
//控制按钮类的构造方法
Command(int button,GameCanvas scr){
curButton = button;
this.scr=scr;
}
//按钮执行方法
public void actionPerformed (ActionEvent e){
tch(curButton){
case button_play:if(!ERS_Block.isPlay){
scr.initScr();
ERS_Block.isPlay = true;
ERS_Block.score = 0;
ERS_Block.scoreField.setText("0");
ERS_Block.timer.resume();
}
scr.requestFocus();
break;
case button_levelup:if(ERS_Block.level 10){
ERS_Block.level++;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_leveldown:if(ERS_Block.level 1){
ERS_Block.level--;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_pause:if(pause_resume){
ERS_Block.timer.suspend();
pause_resume = false;
}else{
ERS_Block.timer.resume();
pause_resume = true;
}
scr.requestFocus();
break;
case button_quit:System.exit(0);
}
}
}
//方块类
class Block {
static int[][] pattern = {
{0x0f00,0x4444,0x0f00,0x4444},//用十六进至表示,本行表示长条四种状态
{0x04e0,0x0464,0x00e4,0x04c4},
{0x4620,0x6c00,0x4620,0x6c00},
{0x2640,0xc600,0x2640,0xc600},
{0x6220,0x1700,0x2230,0x0740},
{0x6440,0x0e20,0x44c0,0x8e00},
{0x0660,0x0660,0x0660,0x0660}
};
int blockType; //块的模式号(0-6)
int turnState; //块的翻转状态(0-3)
int blockState; //快的下落状态
int row,col; //块在画布上的坐标
GameCanvas scr;
//块类的构造方法
Block(GameCanvas scr){
this.scr = scr;
blockType = (int)(Math.random() * 1000)%7;
turnState = (int)(Math.random() * 1000)%4;
blockState = 1;
row = scr.getInitRow();
col = scr.getInitCol();
}
//重新初始化块,并显示新块
public void reset(){
blockType = (int)(Math.random() * 1000)%7;
turnState = (int)(Math.random() * 1000)%4;
blockState = 1;
row = scr.getInitRow();
col = scr.getInitCol();
dispBlock(1);
}
//实现“块”翻转的方法
public void leftTurn(){
if(assertValid(blockType,(turnState + 1)%4,row,col)){
dispBlock(0);
turnState = (turnState + 1)%4;
dispBlock(1);
}
}
//实现“块”的左移的方法
public void leftMove(){
if(assertValid(blockType,turnState,row,col-1)){
dispBlock(0);
col--;
dispBlock(1);
}
}
//实现块的右移
public void rightMove(){
if(assertValid(blockType,turnState,row,col+1)){
dispBlock(0);
col++;
dispBlock(1);
}
}
//实现块落下的操作的方法
public boolean fallDown(){
if(blockState == 2)
return(false);
if(assertValid(blockType,turnState,row-1,col)){
dispBlock(0);
row--;
dispBlock(1);
return(true);
}else{
blockState = 2;
dispBlock(2);
return(false);
}
}
//判断是否正确的方法
boolean assertValid(int t,int s,int row,int col){
int k = 0x8000;
for(int i = 0; i 4; i++){
for(int j = 0; j 4; j++){
if((int)(pattern[t][s]k) != 0){
int temp = scr.getScrArrXY(row-i,col+j);
if (temp0||temp==2)
return false;
}
k = k 1;
}
}
return true;
}
//同步显示的方法
public synchronized void dispBlock(int s){
int k = 0x8000;
for (int i = 0; i 4; i++){
for(int j = 0; j 4; j++){
if(((int)pattern[blockType][turnState]k) != 0){
scr.drawUnit(row-i,col+j,s);
}
k=k1;
}
}
}
}
//定时线程
class MyTimer extends Thread{
GameCanvas scr;
public MyTimer(GameCanvas scr){
this.scr = scr;
}
public void run(){
while(true){
try{
sleep((10-ERS_Block.level + 1)*100);
}
catch(InterruptedException e){}
if(!scr.getBlock().fallDown()){
scr.deleteFullLine();
if(scr.isGameEnd()){
ERS_Block.isPlay = false;
suspend();
}else
scr.getBlock().reset();
}
}
}
}
class WinListener extends WindowAdapter{
public void windowClosing (WindowEvent l){
System.exit(0);
}
}
参考;bs=JAVA%B0%E6%B6%ED%C2%DE%CB%B9%B7%BD%BF%E9%2C%CE%E5%D7%D3%C6%E5%2C%BA%DA%B0%D7%C6%E5sr=z=cl=3f=8wd=JAVA%B6%ED%C2%DE%CB%B9%B7%BD%BF%E9%2C%CE%E5%D7%D3%C6%E5%2C%BA%DA%B0%D7%C6%E5ct=0
紧急!!!用java做一个小游戏有窗口的。。
/*
将以下代码保存为MainFrame.java JDK1.6编译通过
保存我没有做,也不难。方法我已经空下了,你可以自己写写试试.
把txtGuessRecord.getText()的内容写到文件里就行了
*/
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.text.DefaultFormatter;
public class MainFrame extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
private JLabel lblResult;
private JLabel lblInfo;
private JFormattedTextField txtInput;
private JTextArea txtGuessRecord;
private JButton btnGuess;
private JButton btnRestart;
private JButton btnClear;
private JButton btnSave;
private JComboBox cbType;
// 是否正确
private boolean isRight = false;
// 最大次数
private static final int MAX_TIME = 5;
// 当前猜测的次数
private static final int NUM = 0;
private static final int LETTER = 1;
private static int current_time = 0;
// 当前题目
private char current_puzzle = ' ';
// 用户回答
private char player_answer = ' ';
public MainFrame() {
initComponent();
setPreferredSize(new Dimension(450, 220));
pack();
setVisible(true);
setTitle("猜谜游戏");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
try {
UIManager
.setLookAndFeel(new com.sun.java.swing.plaf.windows.WindowsLookAndFeel());
SwingUtilities.updateComponentTreeUI(MainFrame.this);
} catch (Exception ex) {
}
}
// 初始化组件
private void initComponent() {
lblResult = new JLabel();
lblInfo = new JLabel("准备好了吗?", JLabel.LEFT);
txtGuessRecord = new JTextArea(5, 30);
btnGuess = new JButton("猜一下");
btnRestart = new JButton("开始");
btnClear = new JButton("清除");
btnSave = new JButton("保存");
String[] item = new String[] { "数字", "字母" };
cbType = new JComboBox(item);
cbType.setMaximumSize(new Dimension(70, 20));
String ps = "[a-zA-Z\\d]";
Pattern p = Pattern.compile(ps);
txtInput = new JFormattedTextField(new RegexFormatter(p));
txtInput.setMaximumSize(new Dimension(55, 20));
txtInput.setMinimumSize(new Dimension(55, 20));
btnRestart.addActionListener(this);
btnGuess.addActionListener(this);
btnClear.addActionListener(this);
btnGuess.setEnabled(false);
txtGuessRecord.setEditable(false);
setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
Box mainBox = Box.createVerticalBox();
add(mainBox);
setText('?');
mainBox.add(lblResult);
Box box = Box.createHorizontalBox();
box.add(lblInfo);
mainBox.add(box);
Box b = Box.createHorizontalBox();
b.add(txtInput);
Box hBox = Box.createHorizontalBox();
hBox.add(b);
hBox.add(btnGuess);
hBox.add(Box.createHorizontalStrut(3));
hBox.add(btnRestart);
hBox.add(Box.createHorizontalStrut(3));
hBox.add(btnClear);
hBox.add(Box.createHorizontalStrut(3));
hBox.add(btnSave);
hBox.add(Box.createHorizontalStrut(3));
hBox.add(cbType);
mainBox.add(hBox);
JScrollPane scroll = new JScrollPane(txtGuessRecord);
mainBox.add(scroll);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnRestart) {
// 重玩
restart();
} else if (e.getSource() == btnGuess)
// 猜
guess();
else if (e.getSource() == btnClear)
// 清除
clear();
else if (e.getSource() == btnSave)
save();
}
// 设置显示答案
private void setText(char c) {
StringBuilder sb = new StringBuilder();
sb.append("htmlfont size = 72 color = redcenter");
sb.append(c);
sb.append("/center/font/html");
lblResult.setText(sb.toString());
}
// 创建随机字符
private char createRandomChar(int type) {
Random rand = new Random();
int low = 0;
int range = 0;
switch (type) {
case NUM:
low = (int) '0';
range = (int) '9' - low + 1;
break;
case LETTER:
low = (int) 'A';
range = (int) 'Z' - low + 1;
break;
}
int i = rand.nextInt(range) + low;
char c = (char) i;
return c;
}
// 向记录框中输出时间
private void recordTime() {
Date date = new Date();
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
Locale.US);
String sd = formater.format(date);
txtGuessRecord.append(sd);
}
private void guess() {
if (txtInput.getValue() == null)
return;
// 用户的答案
player_answer = Character.toUpperCase(txtInput.getValue().toString()
.charAt(0));
// 判断答案
if (player_answer current_puzzle)
txtGuessRecord.append("小了\n");
else if (player_answer current_puzzle)
txtGuessRecord.append("大了\n");
else {
txtGuessRecord.append("正确\n");
isRight = true;
}
// 猜了一次
++current_time;
// 显示游戏信息
showInfo();
if (isRight || current_time = MAX_TIME)
stop();
}
// 重新开始
private void restart() {
// 记录时间
recordTime();
txtGuessRecord.append(" 游戏开始\n");
// 状态清零
current_time = 0;
btnGuess.setEnabled(true);
isRight = false;
current_puzzle = createRandomChar(cbType.getSelectedIndex());
setText('?');
showInfo();
}
// 停止游戏
private void stop() {
btnGuess.setEnabled(false);
setText(current_puzzle);
// 正确的情况
if (isRight) {
String info = String.format("你用了%d次猜对了\n", current_time);
txtGuessRecord.append(info);
} else
// 超过次数的情况
txtGuessRecord.append("你输了\n");
recordTime();
txtGuessRecord.append(" 游戏结束\n");
}
// 显示游戏信息
private void showInfo() {
String info = String.format("已经猜了%d次, 还剩 %d次 ", current_time,
MAX_TIME - current_time);
lblInfo.setText(info);
}
// 清空记录框
private void clear() {
txtGuessRecord.setText("");
}
private void save() {
// 尚未实现
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MainFrame();
}
});
}
// 正则格式类, 文本框匹配用
class RegexFormatter extends DefaultFormatter {
/**
*
*/
private static final long serialVersionUID = 1L;
private Pattern pattern;
private Matcher matcher;
public RegexFormatter() {
super();
}
public RegexFormatter(String pattern) throws PatternSyntaxException {
this();
setPattern(Pattern.compile(pattern));
}
public RegexFormatter(Pattern pattern) {
this();
setPattern(pattern);
}
public void setPattern(Pattern pattern) {
this.pattern = pattern;
}
public Pattern getPattern() {
return pattern;
}
protected void setMatcher(Matcher matcher) {
this.matcher = matcher;
}
protected Matcher getMatcher() {
return matcher;
}
public Object stringToValue(String text) throws ParseException {
Pattern pattern = getPattern();
if (pattern != null) {
Matcher matcher = pattern.matcher(text);
if (matcher.matches()) {
setMatcher(matcher);
return super.stringToValue(text);
}
throw new ParseException("Pattern did not match", 0);
}
return text;
}
}
}
java黑白棋界面怎样编写?
国际象棋棋盘:
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ChessBoard{
JFrame frame;
JPanel squares[][] = new JPanel[8][8];
public ChessBoard() {
frame = new JFrame("Chess");
frame.setSize(640, 640);
frame.setLayout(new GridLayout(8, 8));
for (int i = 0; i 8; i++) {
for (int j = 0; j 8; j++) {
squares[i][j] = new JPanel();
if ((i + j) % 2 == 0) {
squares[i][j].setBackground(Color.white);
} else {
squares[i][j].setBackground(Color.black);
}
frame.add(squares[i][j]);
}
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
new ChessBoard();
}
}
求用Java编程的黑白棋代码???急用!!!
/**
* 实验课作业
* @author Administrator
* 这个实现允许重画
*/
package com.test;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.ImageObserver;
import java.text.AttributedCharacterIterator;
public class GameDemo2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MainWindow mw=new MainWindow();
mw.setSize(400,400);
mw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mw.setVisible(true);
//mw.setResizable(false);
}
}
class MainWindow extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
NewPanel mp=null;
JButton jbt1;
JButton jbt2;
JButton jbt3;
JButton jbt4;
int flag=-1;
JPanel jp=null;
public MainWindow(){
//初始化组件
mp=new NewPanel();
mp.addMouseListener(mp);
jbt1=new JButton("O 先手");
jbt2=new JButton("X 先手 ");
jbt3=new JButton("RESET");
jbt4=new JButton("EXIT");
jp=new JPanel();
GridLayout gl=new GridLayout(4,1);
gl.setHgap(4);
gl.setVgap(5);
jp.setLayout(gl);
jp.add(jbt1);
jp.add(jbt2);
jp.add(jbt3);
jp.add(jbt4);
this.add(mp,BorderLayout.CENTER);
this.add(jp,BorderLayout.EAST);
jbt1.addActionListener(this);
jbt2.addActionListener(this);
jbt3.addActionListener(this);
jbt4.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jbt1){
flag=1;
mp.setHand(0);
jbt1.setEnabled(false);
jbt2.setEnabled(false);
}
if(e.getSource()==jbt2){
flag=2;
mp.setHand(1);
jbt1.setEnabled(false);
jbt2.setEnabled(false);
}
if(e.getSource()==jbt3){
flag=3;
mp.getGraphics().dispose();
this.remove(mp);
mp=new NewPanel();
this.add(mp,BorderLayout.CENTER);
mp.addMouseListener(mp);
this.remove(jp);
jp=new JPanel();
GridLayout gl=new GridLayout(4,1);
gl.setHgap(4);
gl.setVgap(5);
jp.setLayout(gl);
jp.add(jbt1);
jp.add(jbt2);
jp.add(jbt3);
jp.add(jbt4);
this.add(jp,BorderLayout.EAST);
this.validate();
jbt1.setEnabled(true);
jbt2.setEnabled(true);
}
if(e.getSource()==jbt4){
flag=4;
jbt1.setEnabled(false);
jbt2.setEnabled(false);
System.exit(0);
}
}
public int getFlag(){
return flag;
}
}
//画板
class NewPanel extends JPanel implements MouseListener{
/**
*
*/
private static final long serialVersionUID = 1L;
//记录画图的位置
int xx,yy;
//flag表示是否是初始化
int flag;
//0画X,1画0,2不画
int kind;
//记录是有有图形的数组
//a[i]=0代表是空白可以画 a[i]=1代表X a[i]=2代表画O
int []a=null;
//记录当前鼠标位置所在方格,便于判断是否可以继续画
int curLoc;
//记录谁先手 0-0 1-X
int firstHand;
int times;
//0-O 1-X
int whoWin;
public void setFlag(int f){
flag=f;
}
public void setHand(int h){
firstHand=h;
}
public void setWhoWin(){
whoWin=-1;
}
public NewPanel(){
xx=0;
yy=0;
flag=0;
a=new int[9];
kind=-1;
curLoc=0;
whoWin=-1;
firstHand=-1;
times=1;
whoWin=-1;
}
public void paint(Graphics g){
//super.paint(g);
g.drawRect(0, 0, 300, 300);
g.drawRect(0, 100, 300, 100);
g.drawRect(100, 0, 100, 300);
if(flag==1){
if(isFull()==false){
if(testWin()==false){
if((times+firstHand)%2==0){
if(a[curLoc]==0){
g.drawLine(xx,yy,xx+60,yy+60);
g.drawLine(xx+60, yy, xx, yy+60);
a[curLoc]=1;
times++;
if(testWin()==true){
System.out.println("X赢了");
}
}
}
if((times+firstHand)%2==1){
if(a[curLoc]==0){
g.drawOval(xx,yy,60,60);
a[curLoc]=2;
times++;
if(testWin()==true){
System.out.println("O赢了");
}
}
}
}
}else{
System.out.println("it is FULL!!!");
}
}
}
//将鼠标的坐标转换为所画图形的基准坐标 ,返回当前鼠标在记录数组a中的下标
//圆形为外接矩形的左上角
//X为左上角起始点的坐标
public int Format(int x,int y,int kind){
//第一行第一列
int loc=-1;
if(x=0x100y=0y100){
xx=20;
yy=20;
loc= 0;
}
//第一行第二列
if(x=100x200y=0y100){
xx=120;
yy=20;
loc= 1;
}
//第一行第三列
if(x=200x300y=0y100){
xx=220;
yy=20;
loc= 2;
}
//第二行第一列
if(x=0x100y=100y200){
xx=20;
yy=120;
loc= 3;
}
//第二行第二列
if(x=100x200y=100y200){
xx=120;
yy=120;
loc= 4;
}
//第二行第三列
if(x=200x300y=100y200){
xx=220;
yy=120;
loc= 5;
}
//第三行第一列
if(x=0x100y=200y300){
xx=20;
yy=220;
loc= 6;
}
//第三行第二列
if(x=100x200y=200y300){
xx=120;
yy=220;
loc= 7;
}
//第三行第三列
if(x=200x300y=200y300){
xx=220;
yy=220;
loc= 8;
}
return loc;
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
xx=e.getX();
yy=e.getY();
flag=1;
//kind=new Random().nextInt(3);
curLoc=Format(xx,yy,kind);
this.repaint();
}
//判断是否可以继续画的函数
public boolean isFull(){
for(int i=0;i9;i++)
if(a[i]!=1a[i]!=2)
return false;
return true;
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public boolean testWin(){
boolean isWin=false;
//a[0]=1
if(a[0]!=0a[0]==a[1]a[0]==a[2]){
whoWin=a[0];
isWin=true;
}
if(a[0]!=0a[3]==a[0]a[0]==a[6]){
whoWin=a[0];
isWin=true;
}
if(a[0]!=0a[0]==a[4]a[0]==a[8]){
whoWin=a[0];
isWin=true;
}
if(a[1]!=0a[1]==a[4]a[1]==a[7]){
whoWin=a[1];
isWin=true;
}
if(a[2]!=0a[2]==a[4]a[2]==a[6]){
whoWin=a[2];
isWin=true;
}
if(a[2]!=0a[2]==a[5]a[2]==a[8]){
whoWin=a[2];
isWin=true;
}
if(a[3]!=0a[3]==a[4]a[3]==a[5]){
whoWin=a[3];
isWin=true;
}
if(a[6]!=0a[6]==a[7]a[6]==a[8]){
whoWin=a[6];
isWin=true;
}
return isWin;
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
//重新设置初始值
public void reset(){
this.getGraphics().dispose();
xx=0;
yy=0;
flag=0;
a=new int[9];
kind=-1;
curLoc=0;
whoWin=-1;
firstHand=-1;
times=1;
whoWin=-1;
}
}
就是这个了吧
额们实验课的作业
关于黑白翻转游戏java和黑白转换游戏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-23,除非注明,否则均为
原创文章,转载请注明出处。