求用java语言制作猜物品价格的小游戏的程序代码

求用java语言制作猜物品价格的小游戏的程序代码,第1张

import java.awt.*

import java.awt.event.*

import java.applet.*

import java.io.*

public class testframe extends Frame implements ActionListener

{

Button b1

Panel p1

Label text1

TextField text2

TextArea text3

int num[]

int i

String str

int times=0

int A,B

public testframe(String str)

{

b1=new Button("确定")

p1=new Panel()

text1=new Label("输入四位塌茄整数:")

text2=new TextField(10)

text3=new TextArea(10,10)

p1.setLayout(null)

p1.setBackground(Color.GRAY)

setSize(300,300)

setVisible(true)

b1.setBackground(Color.BLUE)

b1.setForeground(Color.WHITE)

b1.setSize(80,30)

p1.add(text1)

p1.add(text2)

p1.add(text3)

p1.add(b1)

text1.setBounds(0,0,100,20)

text2.setBounds(0,2*text1.getBounds().height,150,20)

text3.setBounds(0,3*text1.getBounds().height,150,150)

b1.setBounds(200,50,60,30)

add(p1)

b1.addActionListener(this)

addWindowListener(new shut())

}

public void rand()

{ num=new int[10]

for(i=0i<4i++)

{

num[i]=(int)(Math.random()*10)

int j=0

while(j<i)

{if(num[j]==num[i])

{num[i]=(int)(Math.random()*10)

continue

}

j++

}

}

}

public void compair()

{

int x,m,n

x=Integer.parseInt(text2.getText())

A=0B=0

for(m=3m>-1m--){

for(n=0n<4n++){

if((int)(x/Math.pow(10,m))==num[n])

{

if(m+n==3)

A++

else

B++

}

}

x=x-(int)(x/Math.pow(10,m))*(int)(Math.pow(10,m))

}

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==b1)

if(times<5){

if(Integer.parseInt(text2.getText())<1000||Integer.parseInt(text2.getText())>9999)

text2.setText("输入数字不合法")

else

{ if(A==4)

text2.setText("猜对了")

times++

compair()

text3.append("第")

text3.append(String.valueOf(times))

text3.append("猜的结散坦果是:")

text3.append(String.valueOf(A))text3.append("A")

text3.append(String.valueOf(B))text3.append("B")

text3.append("\n")

}

}

else

{

text3.setText("冲衫桐超过5次,重新开始.\n")

times=0

rand()

}

}

public static void main(String[] args)

{

new testframe("窗口程序")

}

}

class shut extends WindowAdapter

{

public void windowClosing(WindowEvent e)

{

System.exit(0)

}

}

import java.util.Scanner

public class Wuziqi {

/**

* 棋盘

*/

private final int[][] qipan

/**

* 步数

*/

private int bushu

/**

* 构造方法,设置棋盘规格

* @param x

* @param y

*/

public Wuziqi(int x, int y) {

if (x <1 || y <1) {

System.out.println("棋盘规格应不小于1,使用默认规格")

qipan = new int[9][9]

} else {

qipan = new int[y][x]

}

}

/**

* 游戏开始

*/

public void play() {

int[] zuobiao = null

//如果游戏没有结束

while (!end(zuobiao)) {

//落子,并取得坐标

zuobiao = luozi()

//输出棋盘

out()

}

}

/**

* 输出棋盘和棋子谈芹

*/

private void out() {

for (int i = 0i <qipan.lengthi++) {

for (int j = 0j <qipan[i].lengthj++) {

if (qipan[i][j] == 0) {

System.out.print("  +")

}else if (qipan[i][j] == -1) {

System.out.print("  白")

}else if (qipan[i][j] == 1) {

System.out.print("  黑")

}

}

System.out.println(" ")

}

}

/**

* 落子

*/

private int[] luozi() {

int[] zuobiao

bushu++

if (bushu % 2 == 1) {

System.out.println("请黑方落子")

zuobiao = input()

qipan[zuobiao[1]][zuobiao[0]] = 1

}else {

System.out.println("请白方落子")

zuobiao = input()

qipan[zuobiao[1]][zuobiao[0]] = -1

}

return zuobiao

}

/**

* 输入坐标

* @return

*/

private int[] input() {

Scanner sc = new Scanner(System.in)

System.out.println("请输入x轴坐标")

String x = sc.next()

System.out.println("请输入y轴坐标")

String y = sc.next()

//如果没有通过验证,则再次执行input(),递归算法

if (!validate(x, y)) {

return input()

}

int int_x = Integer.valueOf(x)

int int_y = Integer.valueOf(y)

return new int[] {int_x, int_y}

}

/**

* 校验数据

* @param x

* @param y

* @return

*/

private boolean validate(String x, String y) {

Integer int_x = null

Integer int_y = null

//异常处理的含棚毕和指方式判断字符串是否是一个整数

try {

int_x = Integer.valueOf(x)

int_y = Integer.valueOf(y)

} catch (NumberFormatException e) {

System.out.println("坐标格式错误,坐标应为整数")

return false

}

if (int_x <0 || int_y <0 || int_x >= qipan[0].length || int_y >= qipan.length) {

System.out.println("坐标越界")

return false

}

if (qipan[int_y][int_x] == 0) {

return true

} else {

System.out.println("坐标上已有棋子")

}

return false

}

/**

* 结束条件

* @return

*/

private boolean end(int[] zuobiao) {

if (zuobiao == null) {

return false

}

//计数器

//表示棋盘上经过最近落子坐标的4条线上的连续(和最近落子颜色相同的)棋子的个数

//如果某条线上连续的棋子大于等于4(加上最近落子本身,大于等于5),则游戏结束,符合五子棋规则

int[] jieguo = new int[4]

int x = zuobiao[0]

int y = zuobiao[1]

//定义八个方向

final int[][] fangxiang = {{-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}}

//最近落子的坐标上的棋子颜色

int number = qipan[y][x]

//搜索最近落子坐标为中心最远4的距离

for (int i = 1i <= 4i++) {

//每次搜索不同的距离都搜索八个方向

for (int j = 0j <fangxiang.lengthj++) {

//约定如果某个方向为null时,不再搜索这个方向。关键字continue是跳过本次(一次)循环的意思

if (fangxiang[j] == null) {

continue

}

int mubiao_x = x + i * fangxiang[j][0]

int mubiao_y = y + i * fangxiang[j][1]

//如果搜索坐标相对于棋盘越界,则不再搜索这个方向

if (mubiao_y >= qipan.length || mubiao_y <0 || mubiao_x >= qipan[0].length || mubiao_x <0) {

fangxiang[j] = null

continue

}

//如果最近落子坐标上的值等于目标坐标上的值(颜色相同),则计数器上某条线加1

//否则认为这个方向没有棋子或有别的颜色的棋子,不再搜索这个方向

if (number == qipan[mubiao_y][mubiao_x]) {

jieguo[j % 4]++

}else {

fangxiang[j] = null

}

}

}

//查看计数器上是否有比3更大的数(查看是否有一方胜出)

for (int i : jieguo) {

if (i >3) {

System.out.println("游戏结束")

if (bushu % 2 == 1) {

System.out.println("黑方胜")

} else {

System.out.println("白方胜")

}

return true

}

}

//没有胜出者的情况下,查看棋盘上是否还有空位置,如果有,则游戏可以继续

for (int[] arr : qipan) {

for (int i : arr) {

if (i == 0) {

return false

}

}

}

//如果没有空位置,则平局

System.out.println("游戏结束,平局")

return true

}

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存