求一个简单又有趣的JAVA小游戏代码

Python028

求一个简单又有趣的JAVA小游戏代码,第1张

具体如下:

连连看的小源码

package Lianliankan

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//

分别记录两次62616964757a686964616fe59b9ee7ad9431333335326239被选中的按钮

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//消除方法控制

代码(code)是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。

对于字符和Unicode数据的位模式的定义,此模式代表特定字母、数字或符号(例如 0x20 代表一个空格,而 0x74 代表字符“t”)。一些数据类型每个字符使用一个字节;每个字节可以具有 256 个不同的位模式中的一个模式。

在计算机中,字符由不同的位模式(ON 或 OFF)表示。每个字节有 8 位,这 8 位可以有 256 种不同的 ON 和 OFF 组合模式。对于使用 1 个字节存储每个字符的程序,通过给每个位模式指派字符可表示最多 256 个不同的字符。2 个字节有 16 位,这 16 位可以有 65,536 种唯一的 ON 和 OFF 组合模式。使用 2 个字节表示每个字符的程序可表示最多 65,536 个字符。

单字节代码页是字符定义,这些字符映射到每个字节可能有的 256 种位模式中的每一种。代码页定义大小写字符、数字、符号以及 !、@、#、% 等特殊字符的位模式。每种欧洲语言(如德语和西班牙语)都有各自的单字节代码页。

虽然用于表示 A 到 Z 拉丁字母表字符的位模式在所有的代码页中都相同,但用于表示重音字符(如"é"和"á")的位模式在不同的代码页中却不同。如果在运行不同代码页的计算机间交换数据,必须将所有字符数据由发送计算机的代码页转换为接收计算机的代码页。如果源数据中的扩展字符在接收计算机的代码页中未定义,那么数据将丢失。

如果某个数据库为来自许多不同国家的客户端提供服务,则很难为该数据库选择这样一种代码页,使其包括所有客户端计算机所需的全部扩展字符。而且,在代码页间不停地转换需要花费大量的处理时间。

控制台小游戏 class YZDEL\r\n{\r\n public static void main(String[] args)\r\n {\r\njava.util.Random Shiji = new java.util.Random()\r\n java.util.Scanner Shuru = new java.util.Scanner(System.in)\r\n java.util.Scanner Nandu = new java.util.Scanner(System.in)\r\n int YingxHP = 20\r\n int YingxMP = 0\r\n int MogHP = 20\r\n int MogMP = 0\r\n int MogDo = 0\r\n int fangyu = 0\r\n System.out.println("┏━━━━_┏━━┣┣┓ _ ┓┏━┳━┳┓┓━┓ ")\r\n System.out.println("┏┣━━━┓┏━━┣┣┓ ┃┏ ┃ ┃┓┃ _ ")\r\n System.out.println("┣┣━━━┫_━━┻__ ┃_┓┃ ┃_┏━┣━━┓")\r\n System.out.println("┣┣━━━┫┏━━━━┓_━━┣━┛┗━┻━┻┛┃┃")\r\n System.out.println("┏┣━━━┓┣━━━━┫ ┃┃┃┗__┃┃┣━_")\r\n System.out.println(" ┛┗_┗━━━━_┗___━━┛┛┗━__━┛")\r\n System.out.println()\r\n System.out.println(" 作者:天狐空幻")\r\n System.out.println()\r\n System.out.println("说明:勇者的操作方式为以下所示:")\r\n System.out.println(" 使用攻击需消耗1MP 伤害1HP")\r\n System.out.println(" 使用蓄力可增加1MP 伤害0HP")\r\n System.out.println(" 使用躲闪需消耗0MP 伤害0HP 躲避攻击")\r\n System.out.println(" 使用重击需消耗3MP 伤害2HP 防御无效")\r\n System.out.println(" 恶龙攻击力高, 注意防御是取胜的关键")\r\n System.out.println(" 恶龙MP达到4时可能会放出火焰无法躲避")\r\n System.out.println(" 准备说明完毕,那么让我们来挑战恶龙吧!")\r\n System.out.println("==================================")\r\n //难度选择\r\n System.out.println("请选择难度")\r\n System.out.println("1.娱乐 2.挑战 3.噩梦")\r\n int ND = Nandu.nextInt()\r\n System.out.println("==================================")\r\n while(true) \r\n { \r\n //HP,MP的显示 \r\n System.out.print("勇者: ")\r\n System.out.print(" HP ")\r\n for(int x=YingxHPx>0x--) System.out.print("*")\r\n System.out.print(" "+YingxHP)\r\n System.out.println()\r\n System.out.print(" ")\r\n System.out.print(" MP ")\r\n for(int x=YingxMPx>0x--) System.out.print("*")\r\n System.out.print(" "+YingxMP)\r\n System.out.println()\r\n System.out.print("恶龙: ")\r\n System.out.print(" HP ")\r\n for(int y=MogHPy>0y--) System.out.print("*")\r\n System.out.print(" "+MogHP)\r\n System.out.println()\r\n System.out.print(" ")\r\n System.out.print(" MP ")\r\n for(int y=MogMPy>0y--) System.out.print("*")\r\n System.out.print(" "+MogMP)\r\n System.out.println()\r\n System.out.println("==================================")\r\n //胜利判定 \r\n if(YingxHP2&&MogMP>2) MogDo = 2\r\n else if(MogMP0) MogDo=2 \r\n if(Do==2&&MogMP==0) MogDo=0\r\n if(Do==3&&MogMP=4) MogDo=3}//变态判定。。 \r\n //战斗分析\r\n //防御 \r\n if(Do==3) {fangyu=1System.out.println("你灵巧的躲避攻击!")}\r\nif(MogDo==1) {fangyu=1System.out.println("恶龙进行防御!")}\r\n //角色判定 \r\n if(Do==1&&YingxMP==0) {System.out.println("MP不足!")}\r\n if(Do==1&&YingxMP>0) {\r\nif(fangyu==0) {MogHP=MogHP-1YingxMP=YingxMP-1System.out.println("你发动攻击!")}\r\nif(fangyu==1) {YingxMP=YingxMP-1System.out.println("你的攻击被格挡!")}} \r\n if(Do==2) {YingxMP=YingxMP+1System.out.println("你进行蓄力!")}\r\n if(Do==4&&YingxMP2) {MogHP=MogHP-2YingxMP=YingxMP-3System.out.println("你发动重击!")}\r\n if(Do>4) System.out.println("你不知所措...")\r\n //敌人判定 \r\n if(MogDo==2&&MogMP==0) {System.out.println("恶龙在发呆!")}\r\n if(MogDo==2&&MogMP>0) {\r\nif(fangyu==0) {YingxHP=YingxHP-2MogMP=MogMP-1System.out.println("恶龙发动攻击!")}\r\nif(fangyu==1) {MogMP=MogMP-1System.out.println("恶龙的攻击被躲开了!")}} \r\n if(MogDo==0) {MogMP=MogMP+1System.out.println("恶龙进行蓄力!")} \r\n if(MogDo==3&&MogMP3) {YingxHP=YingxHP-4MogMP=MogMP-4System.out.println("恶龙发动火焰吐吸!躲避不能!")} \r\n //结束 \r\n fangyu = 0\r\n MogDo = 0\r\n System.out.println("____________________")\r\n System.out.println()\r\n System.out.println("==================================") }\r\n }\r\n}

import java.util.Random

import javax.swing.*

import java.awt.BorderLayout

import java.awt.Container

import java.awt.event.*

public class SmallGame extends JFrame {

private Random r

private String[] box = { "剪刀", "石头", "布" }

private JComboBox choice

private JTextArea ta

private JLabel lb

private int win = 0

private int loss = 0

private int equal = 0

public SmallGame() {

initial()//调用initial方法,就是下面定义的那个.该方法主要是初始界面.

pack()

setTitle("游戏主界面")

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

setLocation(400, 300)

setVisible(true)

}

public static void main(String[] args) {

new SmallGame()

}

public void initial() {

r = new Random()// 生成随机数

choice = new JComboBox()//初始化choice这个下拉框.也就是你选择出剪子还是石头什么的那个下拉框..

for (int i = 0i <box.lengthi++) {//为那个下拉框赋值.用前面定义的private String[] box = { "剪刀", "石头", "布" }附值.这样下拉框就有三个选项了..

choice.addItem(box[i])

}

ta = new JTextArea(3, 15)//初始化那个文本域3行15列

ta.setEditable(false)//让用户不能编辑那个文本域即不能在里面写东西

JButton okBut = new JButton("出招")//新建一个出招的按钮

okBut.addActionListener(new ActionListener() {//给出招按钮加个监听.意思就是监听着这个按钮看用户有没有点击它..如果点击就执行下面这个方法

public void actionPerformed(ActionEvent e) {//就是这个方法

ta.setText(getResult())//给那个文本域赋值..就是显示结果 赋值的是通过getResult()这个方法得到的返回值 getResult()这个方法下面会讲

lb.setText(getTotal())//给分数那个LABEL赋值..就是显示分数..赋值的是通过getTotal()这个方法得到的返回值

}

})

JButton clearBut = new JButton("清除分数")//新建一个清楚分数的按钮

clearBut.addActionListener(new ActionListener() {//同上给他加个监听

public void actionPerformed(ActionEvent e) {//如果用户点击了就执行这个方法

ta.setText("")//给文本域赋值为""..其实就是清楚他的内容

win = 0//win赋值为0

loss = 0//同上

equal = 0//同上

lb.setText(getTotal())//给显示分数那个赋值..因为前面已经都赋值为0了..所以这句就是让显示分数那都为0

}

})

lb = new JLabel(getTotal())//初始化那个显示分数的东西

JPanel choicePanel = new JPanel()//定义一个面板..面板就相当于一个画图用的东西..可以在上面加按钮啊文本域什么的..

choicePanel.add(choice)//把下拉框加到面板里

choicePanel.add(okBut)//把出招按钮加到面板里

choicePanel.add(clearBut)//把清楚分数按钮加到面板里

JScrollPane resultPanel = new JScrollPane(ta)//把文本域加到一个可滚动的面板里面..JScrollPane就是可滚动的面板..这样如果那个文本域内容太多就会出现滚动条..而不是变大

JPanel totalPanel = new JPanel()//再定义个面板..用来显示分数的..

totalPanel.add(lb)//把那个显示分数的label加到里面去

Container contentPane = getContentPane()//下面就是布局了..

contentPane.setLayout(new BorderLayout())

contentPane.add(choicePanel, BorderLayout.NORTH)

contentPane.add(resultPanel, BorderLayout.CENTER)

contentPane.add(totalPanel, BorderLayout.SOUTH)

}

public String getResult() {//获得结果的方法 返回值是一个String..这个返回值会用来显示在文本域里面

String tmp = ""

int boxPeop = choice.getSelectedIndex()//获得你选择的那个的索引..从0开始的..

int boxComp = getBoxComp()//获得电脑出的索引..就是随机的0-2的数

tmp += "你出:\t" + box[boxPeop]//下面你应该明白了..

tmp += "\n电脑出:\t" + box[boxComp]

tmp += "\n结果:\t" + check(boxPeop, boxComp)

return tmp

}

public int getBoxComp() {//就是产生一个0-2的随机数..

return r.nextInt(3)//Random的nextInt(int i)方法就是产生一个[0-i)的随机整数 所以nextInt(3)就是[0-2]的随机数

}

public String check(int boxPeop, int boxComp) {//这个就是判断你选择的和电脑选择的比较结果..是输是赢还是平..boxPeop就是你选择的..boxComp就是电脑选择的..

String result = ""

if (boxPeop == (boxComp + 1) % 3) {//(boxComp + 1) % 3 电脑选择的加上1加除以3取余..也就是如果电脑选0这个就为1..这个判断的意思就是如果电脑选0并且你选1..那么就是电脑选了

//private String[] box = { "剪刀", "石头", "布" }这里面下标为0的..你选了下标为1的..就是电脑选剪刀你选石头..所以你赢了..如果电脑选1..(boxComp + 1) % 3就为2..意思就是

//电脑选了石头你选了布..所以你赢了..另外一种情况你明白了撒..只有三种情况你赢..所以这里都包含了..也只包含了那三种..

result = "你赢了!"

win++//赢了就让记你赢的次数的那个变量加1

} else if (boxPeop == boxComp) {//相等当然平手了

result = "平"

equal++//同上了

} else {//除了赢和平当然就是输了..

result = "你输了!"

loss++//同上

}

return result

}

public int getPoint() {

return (win - loss) * 10

}

public String getTotal() {

return "赢:" + win + " 平:" + equal + " 输:" + loss + " 得分:"

+ getPoint()

}

}

希望你能明白哈。。