java向另一activity输入_Java--activity--用输入输出流 制作小游戏

1.向玩家显示菜单(玩游戏,查看说明,查看百分百,退出)

e86149e92fb24227e0f7506b0047fff0.png

操作步骤:

1.建立包,类如上:

在FileOperation.java:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagegame;2 import java.io.*;3 importjavax.swing.JOptionPane;4 public classFileOperation {5 String player1,player2, playerName;6 int winScore=1,lostScore=0;7

8 voidplayer1(String player){9 this.player1=player;10 }11 voidplayer2(String player){12 this.player2=player;13 }14 String getData(String player){15

16 playerName=player.toLowerCase();17 String finalScore="";18 //Reading Data

19 try (BufferedReader bf=new BufferedReader( new FileReader ("Score.txt")) )20 {21 String stringSreach =playerName ;22 int linecount1=0;23 String line;24 String line1;25

26 int linecount =0;27 double temp=0.0;28 double sum=0.0;29

30 while((line=bf.readLine ())!=null) {31 String txt[]=line.split(" ");32 for (int i=0;i

45 }46 returnfinalScore;47 }48 voidwriteData(String playerName){49 //Writing Data

50 try (BufferedWriter bw =new BufferedWriter (new FileWriter ("Score.txt"))){51 if(playerName.equals(player1)) {52 bw.append("\n"+player1.toLowerCase()+" "+winScore);53 bw.append("\n"+player2.toLowerCase()+" "+lostScore);54 bw.append("\n........................");55 }56 else{57 bw.append("\n"+player2.toLowerCase()+" "+winScore);58 bw.append("\n"+player1.toLowerCase()+" "+lostScore);59 bw.append("\n................................. ");60 }61 }62 catch(Exception e){63

64 }65 }66 }

View Code

在GameMenuFrame.java:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 /*

2 * To change this template, choose Tools | Templates3 * and open the template in the editor.4 */

5 packagegame;6

7 import javax.swing.*;8 import java.awt.*;9 import java.awt.event.*;10

11 public class GameMenuFrame extends JFrame implementsActionListener{12

13 JButton playJb, instructionJb, winPercentJb, exitJb;14

15

16 GameMenuFrame(){17 super("GameMenu");18 playJb=new JButton("Play");19 instructionJb=new JButton("View Instruction");20 winPercentJb=new JButton ("View the Win Percentage");21 exitJb=new JButton("Exit");22

23

24 setLayout(null);25

26 playJb.setBounds(80,30,180,40);27 instructionJb.setBounds(80, 80, 180, 40);28 winPercentJb.setBounds(80,130,180,40);29 exitJb.setBounds(80,180,180,40);30

31

32 add(playJb);33 add(instructionJb);34 add(winPercentJb);35 add(exitJb);36

37 setSize(380,300);38 setVisible(true);39 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);40

41 playJb.addActionListener(this);42

43 instructionJb.addActionListener(this);44

45 winPercentJb.addActionListener(this);46

47 exitJb.addActionListener(this);48

49

50 }51 public voidactionPerformed(ActionEvent ae){52 if(ae.getSource()==playJb){53 InputFrame iframe=newInputFrame();54 }55 else if(ae.getSource()==instructionJb){56 JOptionPane.showMessageDialog(this, "Your goal is to be the first player to get 3 X's or O's in a row. (horizontally, diagonally, or vertically)");57 }58 else if(ae.getSource()==winPercentJb){59 GetScoreFrame gcf=newGetScoreFrame();60

61 }62 else{63 System.exit(0);64 }65 }66 }

View Code

在GetScoreFrame.java:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 /*

2 * To change this template, choose Tools | Templates3 * and open the template in the editor.4 */

5 packagegame;6 import javax.swing.*;7 import java.awt.*;8 import java.awt.event.*;9

10 public class GetScoreFrame extendsJFrame{11 JLabel playerNameJl;12 JTextField playerNameJtf;13 JButton scoreJb;14 FileOperation fo;15 GetScoreFrame(){16 super("Win Percent");17 setLayout(null);18

19

20 playerNameJl=new JLabel(" Enter Name ");21 playerNameJtf=newJTextField();22 scoreJb=new JButton("Get the Win Percent");23

24 playerNameJl.setBounds(10,50,100,30);25 playerNameJtf.setBounds(120,50,120,30);26 scoreJb.setBounds(50,120,150,30);27

28 add(playerNameJl);29 add(playerNameJtf);30 add(scoreJb);31

32 setSize(300,300);33 setVisible(true);34

35 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);36 fo=newFileOperation();37 scoreJb.addActionListener(newActionListener(){38 public voidactionPerformed(ActionEvent ae){39 String playerName=playerNameJtf.getText();40 String scorePercent=fo.getData(playerName);41 JOptionPane.showMessageDialog(null, "Win Percentage of "+playerName+":"+scorePercent);42 }43 });44

45 }46

47

48 }

View Code

在InputFrame.java:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagegame;2

3 import javax.swing.*;4 import java.awt.*;5 import java.awt.event.*;6

7 public class InputFrame extends JFrame implementsActionListener{8

9 JLabel player1Jl, player2Jl;10 JTextField player1Jtf,player2Jtf;11 JButton startJb;12

13 InputFrame(){14 super("Inputs Frame");15

16 player1Jl=new JLabel("Enter First Player Name");17 player2Jl=new JLabel("Enter Second Player Name");18

19 player1Jtf=newJTextField();20 player2Jtf=newJTextField();21

22 startJb=new JButton("Start the Game");23

24

25 setLayout(null);26

27 player1Jl.setBounds(10, 30,160,30);28 player1Jtf.setBounds(170,30, 160,30);29

30 player2Jl.setBounds(10, 80,160,30);31 player2Jtf.setBounds(170,80, 160,30);32

33 startJb.setBounds(50,150,150,30);34

35

36 add(player1Jl);37 add(player1Jtf);38

39 add(player2Jl);40 add(player2Jtf);41

42 add(startJb);43

44

45 startJb.addActionListener(this);46

47

48 setSize(380,300);49 setVisible(true);50 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);51

52

53

54 }55 public voidactionPerformed(ActionEvent ae){56

57 String player1=player1Jtf.getText();58 String player2=player2Jtf.getText();59

60 TicTacToeFrame ttf=newTicTacToeFrame(player1,player2);61

62 }63 }

View Code

在Main.java:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagegame;2

3

4 public classMain {5 public static voidmain(String args[]) {6

7

8

9 GameMenuFrame gmf=newGameMenuFrame();10 }11 }

View Code

TicTacToeFrame.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagegame;2

3

4

5 import java.awt.*;6 import java.awt.event.*;7 import javax.swing.*;8

9

10 public class TicTacToeFrame implementsActionListener {11

12 privateJFrame window;13 privateJButton button1;14 privateJButton button2;15 privateJButton button3;16 privateJButton button4;17 privateJButton button5;18 privateJButton button6;19 privateJButton button7;20 privateJButton button8;21 privateJButton button9;22 private String letter = "";23 private int count = 0;24 private boolean win = false;25 String player1,player2;26

27 FileOperation fo;28

29 publicTicTacToeFrame(String player1,String player2){30

31 fo=newFileOperation();32

33 this.player1=player1;34 this.player2=player2;35

36 window = new JFrame("Tic-Tac-Toe");37 button1 = new JButton("");38 button2 = new JButton("");39 button3 = new JButton("");40 button4 = new JButton("");41 button5 = new JButton("");42 button6 = new JButton("");43 button7 = new JButton("");44 button8 = new JButton("");45 button9 = new JButton("");46 window.setSize(380,300);47 window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);48 window.setLayout(new GridLayout(3,3));49

50

51 window.add(button1);52 window.add(button2);53 window.add(button3);54 window.add(button4);55 window.add(button5);56 window.add(button6);57 window.add(button7);58 window.add(button8);59 window.add(button9);60

61

62 button1.addActionListener(this);63 button2.addActionListener(this);64 button3.addActionListener(this);65 button4.addActionListener(this);66 button5.addActionListener(this);67 button6.addActionListener(this);68 button7.addActionListener(this);69 button8.addActionListener(this);70 button9.addActionListener(this);71

72

73 window.setVisible(true);74 }75

76 public voidactionPerformed(ActionEvent a) {77 count++;78

79

80 if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9){81 letter = "X";82 } else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10){83 letter = "O";84 }85

86

87 if(a.getSource() ==button1){88 button1.setText(letter);89 button1.setEnabled(false);90 } else if(a.getSource() ==button2){91 button2.setText(letter);92 button2.setEnabled(false);93 } else if(a.getSource() ==button3){94 button3.setText(letter);95 button3.setEnabled(false);96 } else if(a.getSource() ==button4){97 button4.setText(letter);98 button4.setEnabled(false);99 } else if(a.getSource() ==button5){100 button5.setText(letter);101 button5.setEnabled(false);102 } else if(a.getSource() ==button6){103 button6.setText(letter);104 button6.setEnabled(false);105 } else if(a.getSource() ==button7){106 button7.setText(letter);107 button7.setEnabled(false);108 } else if(a.getSource() ==button8){109 button8.setText(letter);110 button8.setEnabled(false);111 } else if(a.getSource() ==button9){112 button9.setText(letter);113 button9.setEnabled(false);114 }115

116

117 if( button1.getText() == button2.getText() && button2.getText() == button3.getText() && button1.getText() != ""){118 win = true;119 }120 else if(button4.getText() == button5.getText() && button5.getText() == button6.getText() && button4.getText() != ""){121 win = true;122 }123 else if(button7.getText() == button8.getText() && button8.getText() == button9.getText() && button7.getText() != ""){124 win = true;125 }126

127

128 else if(button1.getText() == button4.getText() && button4.getText() == button7.getText() && button1.getText() != ""){129 win = true;130 }131 else if(button2.getText() == button5.getText() && button5.getText() == button8.getText() && button2.getText() != ""){132 win = true;133 }134 else if(button3.getText() == button6.getText() && button6.getText() == button9.getText() && button3.getText() != ""){135 win = true;136 }137

138

139 else if(button1.getText() == button5.getText() && button5.getText() == button9.getText() && button1.getText() != ""){140 win = true;141 }142 else if(button3.getText() == button5.getText() && button5.getText() == button7.getText() && button3.getText() != ""){143 win = true;144 }145 else{146 win = false;147 }148

149

150 if(win == true){151 System.out.println(letter);152 switch(letter)153 {154 case "X":JOptionPane.showMessageDialog(null, player1.toUpperCase() + " WINS!");155

156 fo.player1(player1);157 fo.player2(player2);158 fo.writeData(player1);159 break;160 case "O":JOptionPane.showMessageDialog(null, player2.toUpperCase() + " WINS!");161 fo.player1(player1);162 fo.player2(player2);163 fo.writeData(player2);164

165 break;166 }167

168 } else if(count == 9 && win == false){169 JOptionPane.showMessageDialog(null, "Tie Game!");170 }171 }172

173 }

View Code

测试结果:

68bffbd8403bf8497fdddaee60209fd4.png

点击第一个按钮后

cd01e09de1b0bc450981e9f29d91c62c.png

点击第二个按钮后:

547eeec8a225207aad1bba406a62d647.png

点击第三个按钮:

0e114a1f7ec12af42ab11d53a207fd70.png

点击第四个按钮退出。

每次完完成一局,数据保存在Score.txt中:

834d04897d95fdf0e2128ab0b3585fa2.png

游戏改进:

f354724ccbca8249d2c25f9d2e90973d.png

在该位置加一个“true”

使得每次记录不被覆盖!

涉及知识点:

事件处理模型:

一.事件源

2.Antionevent(单击事件)

4个按钮----------(单机)--------->antionevent------(处理事件的方法)---------->actionperfomed

二.实现接口中的抽象方法:定义类

作用:

1.实现接口 ActionListener

2.重写接口中的抽象方法

三.监听器

监听器一般由时间处理接口(事件处理程序实现类创建的对象做监听器)

将监听器注册到事件源上-----".addActionListener();"

调用事件处理的方法。

四、匿名内部类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值