RPG游戏角色设置

几乎所有的RPG游戏(一种源自《龙与地下城》的游戏类型)在进入游戏时都会让用户自己来创建自己喜欢的角色。本次上机要求编写一个简化的创建游戏角色的程序。

Information



package
com.rpg.game;

import
java.awt.Color;

import
java.awt.Font; 

import
javax.swing.ButtonGroup;

import
javax.swing.JFrame;

import
javax.swing.JLabel;

import
javax.swing.JRadioButton;

import
javax.swing.JTextField;

 

public
class Information {

        

 

        JFrame f = new JFrame("欢迎进入");//窗口名称

        JLabel lname=new JLabel(" ☆  姓名: ");

        JTextField name=new JTextField(500);

        JLabel lsex=new JLabel(" ☆  性别: ");

        ButtonGroup bgrp_sex=new
ButtonGroup();//单选;设置按钮组

        JRadioButton sex0=new
JRadioButton("男♂");

        JRadioButton sex1=new
JRadioButton("女♀");

        public void frame(){

 

                 f.setSize(850,450);//大小

        f.setLocation(500,200);//位置

        f.setLayout(null);

        JLabel title=new JLabel("龙与地下城");

        title.setBounds(300, 30, 500, 50);

        title.setFont(new Font("隶书",
Font.BOLD, 40));

        f.add(title); 

        JLabel build=new JLabel("请创建您的角色
");

        build.setBounds(50, 80, 500, 50);  

        build.setFont(new Font("隶书",
Font.BOLD, 30));  

        f.add(build);

        f.getContentPane().setBackground(new
Color(210,240,240));

 

        f.setVisible(true);

        }

        public void get_Information(){    

                 //游戏角色姓名输入    

                 lname.setBounds(50, 150, 150,
30);//起始坐标(x,y),长度,高度  

                 f.add(lname);      

                 lname.setFont(new Font("楷体",
Font.BOLD, 20));

                 name.setBounds(200, 150, 200,
30);     

                 f.add(name);        //游戏性别选择      

                 lsex.setBounds(50, 200, 150,
30);   

                 f.add(lsex);    

                 lsex.setFont(new Font("楷体",
Font.BOLD, 20));

                  sex0.setBounds(200, 200, 100, 30);   

                  sex1.setBounds(300, 200, 100, 30);   

                  bgrp_sex.add(sex0);  

                  bgrp_sex.add(sex1); 

                  f.add(sex0);  


                  f.add(sex1);     

                  sex0.setOpaque(false);      

                  sex1.setOpaque(false);      

                  f.setVisible(true);

                  

        }

}


Race类继承基类



package com.rpg.game;

import java.awt.Font;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;

import javax.swing.JLabel;

import javax.swing.JRadioButton;

 

public class Race extends Information {

        

        JLabel
lrace=new JLabel(" ☆  种族: ");

        ButtonGroup
bgrp_race=new ButtonGroup();//单选;设置按钮组

        JRadioButton
race0=new JRadioButton("人类");

        JRadioButton
race1=new JRadioButton("精灵");

        JRadioButton
race2=new JRadioButton("兽人");

        JRadioButton
race3=new JRadioButton("矮人");

        JRadioButton
race4=new JRadioButton("元素");

        JLabel
lcareer=new JLabel(" ☆  职业:
");      

        ButtonGroup
bgrp_career=new ButtonGroup();//单选;设置按钮组

        JRadioButton
career0=new JRadioButton("狂战士");

        JRadioButton
career1=new JRadioButton("圣骑士");

        JRadioButton
career2=new JRadioButton("刺客");

        JRadioButton
career3=new JRadioButton("猎手");

        JRadioButton
career4=new JRadioButton("祭司");

        JRadioButton
career5=new JRadioButton("巫师");

        

        public
void get_Race(){

                 //游戏种族选择

                 lrace.setBounds(50,
250, 150, 30);

       
f.add(lrace);

       
lrace.setFont(new Font("楷体", Font.BOLD,
20));    

       
//五个种族的单选按钮             

       
race0.setBounds(200, 250, 100, 30);  


       
race1.setBounds(300, 250, 100, 30);

       
race2.setBounds(400, 250, 100, 30);

       
race3.setBounds(500, 250, 100, 30);

       
race4.setBounds(600, 250, 100, 30);

       
bgrp_race.add(race0);

       
bgrp_race.add(race1);

       
bgrp_race.add(race2);

       
bgrp_race.add(race3);

       
bgrp_race.add(race4);

       
f.add(race0);

       
f.add(race1);

       
f.add(race2);

       
f.add(race3);

       
f.add(race4);

       
race0.setOpaque(false);

       
race1.setOpaque(false);

       
race2.setOpaque(false);

       
race3.setOpaque(false);

       
race4.setOpaque(false);

       
lcareer.setBounds(50, 300, 150, 30);

       
f.add(lcareer);

       
lcareer.setFont(new Font("楷体", Font.BOLD,
20));

       
career0.setBounds(200, 300, 100, 30);

       
career1.setBounds(300, 300, 100, 30);

       
career2.setBounds(400, 300, 100, 30);   


       
career3.setBounds(500, 300, 100, 30);       

        career4.setBounds(600, 300, 100, 30);      

       
career5.setBounds(700, 300, 100, 30);       

       
bgrp_career.add(career0);

       
bgrp_career.add(career1);   

       
bgrp_career.add(career2);      

       
bgrp_career.add(career3);      

        bgrp_career.add(career4);     

       
bgrp_career.add(career5);   

       
f.add(career0);     

       
f.add(career1);

       
f.add(career2);     

       
f.add(career3);   

       
f.add(career4);    

       
f.add(career5);      

       
career0.setOpaque(false);  

       
career1.setOpaque(false);    

       
career2.setOpaque(false);     

       
career3.setOpaque(false);      

       
career4.setOpaque(false);      

       
career5.setOpaque(false);

       
race0.addItemListener(new ItemListener() {           

       
 public void
itemStateChanged(ItemEvent e) 

       
 {                        

       
         if(e.getStateChange()==ItemEvent.SELECTED){               

       
                  career0.setEnabled(true);                                 

       
                  career1.setEnabled(true);       

                          career2.setEnabled(true);                        

       
                  career3.setEnabled(true);                        

       
                  career4.setEnabled(true);                        

       
                  career5.setEnabled(true);                

       
                  }               

       
         }               

       
 });

       
race1.addItemListener(new ItemListener() {                    

         public
void itemStateChanged(ItemEvent e) {        

       
         if(e.getStateChange()==ItemEvent.SELECTED){       

       
                  career0.setEnabled(false);                       

       
                  career1.setEnabled(false);                       

       
                  career2.setEnabled(true);                                 

       
                  career3.setEnabled(true);                                 

       
                  career4.setEnabled(true);                        

       
                  career5.setEnabled(true);                        

       
                  }                        

       
         }               

       
 });

       
race2.addItemListener(new ItemListener() {                    

       
 public void
itemStateChanged(ItemEvent e) {        

       
         if(e.getStateChange()==ItemEvent.SELECTED){       

       
                  career0.setEnabled(true);                        

       
                  career1.setEnabled(false);                       

       
                  career2.setEnabled(false);                                

       
                  career3.setEnabled(true);                                 

       
                  career4.setEnabled(true);                                

       
                  career5.setEnabled(false);                       

       
                  }                        

       
         }               

       
 });

       
race3.addItemListener(new ItemListener() {           

       
 public void
itemStateChanged(ItemEvent e) {                

       
         if(e.getStateChange()==ItemEvent.SELECTED){               

                          career0.setEnabled(true);                

       
                  career1.setEnabled(true);                        

       
                  career2.setEnabled(false);                       

       
                  career3.setEnabled(false);                       

       
                  career4.setEnabled(true);                        

       
                  career5.setEnabled(false);                       

       
                  }               

                 }               

       
 });        

       
race4.addItemListener(new ItemListener() {           

       
 public void
itemStateChanged(ItemEvent e) {                

       
         if(e.getStateChange()==ItemEvent.SELECTED){               

       
                  career0.setEnabled(false);                                

       
                  career1.setEnabled(false);               

       
                  career2.setEnabled(false);                       

       
                  career3.setEnabled(false);               

       
                  career4.setEnabled(true);                

       
                  career5.setEnabled(true);                

       
                  }               

       
         }       

       
 });

      


       
f.setVisible(true);

       
}

}


Random 生成随机数类



package com.rpg.game;

import java.util.*;

public class get_Random {

 

        public
int power;//力量 

        public
int speed;//敏捷  

        public
int physical;//体力       

        public
int IQ;//智力

        public
int wisdom;//智慧

        public
int HP=physical*20;//生命值

        public
int MP=(IQ+wisdom)*10;//魔法值

        public
String count; 

        public
String getRandom(int a,int b,int c,int d,int e){    

                 int
power;//力量    

                 int
speed;//敏捷              

                 int
physical;//体力 

                 int
IQ;//智力           

                 int
wisdom;//智慧          

                 Random
rand=new Random();        

                 do{           

                         power=a+rand.nextInt()%5;    

                 speed=b+rand.nextInt()%5;             

                 physical=c+rand.nextInt()%5; 

                 IQ=d+rand.nextInt()%5;           

                 wisdom=e+rand.nextInt()%5; 

                 }

                 while(power+speed+physical+IQ+wisdom!=100); 

                 int
HP=physical*20;//生命值         

                 int
MP=(IQ+wisdom)*10;//魔法值 

                 count="力量值:\t"+power+"\n\n敏捷度:\t"+speed+"\n\n体力值:\t"+physical+"\n\n智力值:\t"+IQ+"\n\n智慧值:\t"+wisdom+"\n\n生命值:\t"+HP+"\n\n魔法值:\t"+MP;  

                 return
count;

                 }       

        }

 


RPG_GUI



package
com.rpg.game;

import java.awt.Color;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.io.FileWriter;

import java.io.IOException;

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JRadioButton;

import javax.swing.JTextArea;

import javax.swing.JTextField;

 

public class RPG_GUI extends Race {

 

        JFrame
fr = new JFrame();

        String
user_name;

        String
user_sex;

        String
race;

        String
career;

        public
static final String NEW_LINE = System.getProperty("line.separator");

        //
获取系统的换行符

        public
static final String FILE_PATH = "E:/users.txt";

 

        Save
save = new Save();

        public
void game(){ 

                 //设置生成按钮        

                 JButton
complete=new JButton("下一步");   

                 complete.setBounds(350,
350, 100, 30);   

                 f.add(complete);     

                 f.setVisible(true);//可见性     

                 //生成按钮的事件响应         

                 complete.addActionListener(new
ActionListener() {      

                         public
void actionPerformed(ActionEvent e) {

                                  if(e.getSource()==complete){

                                          f.setVisible(false);

                                          //设置生成的角色显示界面

                                          JFrame
fr=new JFrame(); 

                                          fr.setLocation(700,
100);

                                          fr.setTitle("您的角色");   

                                          fr.setSize(400,800); 

                                          fr.setLayout(null);    

                                          fr.getContentPane().setBackground(new
Color(40,210,210));

                                          get_Random
rand=new get_Random();

                                          user_name=name.getText();//获取静态文本框输入的姓名

                                          user_sex
= null;       

                                          if(sex0.isSelected())
user_sex="男";//获取选择的性别

                                          else
if(sex1.isSelected()) user_sex="女";

                                          JLabel
a = new JLabel("姓名: "+user_name);

                                          JLabel
b=new JLabel("性别: "+user_sex);

                                                                            race
= null;

                                                                            String
str=null;

                                                                            if(race0.isSelected())

                                                                            {race="人类";str=rand.getRandom(40,20,30,5,5);}

                                                                            else
if(race1.isSelected())

                                                                            {race="精灵";str=rand.getRandom(25,15,30,20,10);}

                                                                            else
if(race2.isSelected()) 

                                                                            {race="兽人";str=rand.getRandom(20,35,20,15,10);}

                                                                            else
if(race3.isSelected())

                                                                            {race="矮人";str=rand.getRandom(15,40,15,10,20);}

                                                                            else
if(race4.isSelected())

                                                                            {race="元素";str=rand.getRandom(10,20,10,20,40);}       

                                                                            JLabel
c=new JLabel("种族: "+race);

                                                                            career
= null;   

                                                                            if(career0.isSelected())career="狂战士";

                                                                            else
if(career1.isSelected()) career="圣骑士";

                                                                            else
if(career2.isSelected()) career="刺客";

                                                                            else
if(career3.isSelected()) career="猎手";

                                                                            else
if(career4.isSelected()) career="祭司";

                                                                            else
if(career5.isSelected()) career="巫师";

                                                                            JLabel
d=new JLabel("职业: "+career);

                                                                           JTextArea
value=new JTextArea();   

                                                                            value.setText(str);                    

                                                                            a.setBounds(100,
50, 400, 30);                        

                                                                            b.setBounds(100,
100, 300, 30);                     

                                                                            c.setBounds(100,
150, 300, 30);                      

                                                                            d.setBounds(100,
200, 300, 30);                             

                                                                           value.setEditable(false);                          

                                                                            value.setBounds(100,
250, 150, 400);        

                                                                            value.setOpaque(false);//设置为不透明                     

                                                                            a.setFont(new
Font("黑体",Font.BOLD, 20)); 

                                                                            b.setFont(new
Font("黑体",Font.BOLD, 20));         

                                                                            c.setFont(new
Font("黑体",Font.BOLD, 20)); 

                                                                            d.setFont(new
Font("黑体",Font.BOLD, 20));         

                                                                            value.setFont(new
Font("黑体",Font.BOLD, 20));   

                                                                            JLabel
isOK =new JLabel("您对生成角色是否满意?");               

                                                                            isOK.setBounds(100,
600, 400, 30);                               

                                                                            isOK.setFont(new
Font("黑体", Font.PLAIN, 20));     

                                                                            fr.add(isOK);                              

                                                                            JButton
yes=new JButton("满意");         

                                                                            yes.setBounds(100,
650, 80, 30);   

                                                                            fr.add(yes);                           

                                                                            JButton
no=new JButton("不满意");        

                                                                            no.setBounds(200,
650, 80, 30);    

                                                                            fr.add(no);                          

                                                                            fr.add(a);                           

                                                                            fr.add(b);                           

                                                                            fr.add(c);                           

                                                                            fr.add(d);                           

                                                                            fr.add(value);                    

                                                                            fr.setVisible(true);    

                                                                            //满意按钮弹出提示框                  

                                                                            yes.addActionListener(new
ActionListener() {                             

                                                                                    public
void actionPerformed(ActionEvent e) {  

                                                                                            StringBuffer
sb = new StringBuffer();          

                                                                                            sb.append("姓名:
"+user_name+NEW_LINE+"性别: "+user_sex+NEW_LINE+"种族:
"+race+NEW_LINE+"职业: "+career+                       

                                                                                                             NEW_LINE+rand.count+NEW_LINE);                                

                                                                                            save.saveInfo(sb.toString());                           


                                                                                            JOptionPane.showMessageDialog(new
JFrame().getContentPane(), "恭喜您
创建成功!", "系统信息", JOptionPane.PLAIN_MESSAGE);                                          }                                         });     

                                                                            //不满意按钮弹出提示框                      

                                                                            no.addActionListener(new
ActionListener() {    

                                                                                    

                                                                                    

                                                                                    public
void actionPerformed(ActionEvent e) {                           

                                                                                            int
option = JOptionPane.showConfirmDialog(fr, "您是否想重新创建"); 

                                                                                            if
(JOptionPane.OK_OPTION == option) {                                                  

                                                                                                     fr.setVisible(false);                                                      

                                                                                                     name.setText(null);                                             

                                                                                                    bgrp_sex.clearSelection();                                        

                                                                                                    career0.setEnabled(true);                                         

                                                                                                    career1.setEnabled(true);                                         

                                                                                                    career2.setEnabled(true);                                                 

                                                                                                    career3.setEnabled(true);                                                          

                                                                                                    career4.setEnabled(true);                                                          

                                                                                                    career5.setEnabled(true);                                                     

                                                                                                    bgrp_race.clearSelection();                                               

                                                                                                    bgrp_career.clearSelection();                                            

                                                                                                     f.setVisible(true);                                       }                                                     

                                                                                            else
if(JOptionPane.NO_OPTION==option){  

                                                                                                     fr.setVisible(false);   

                                                                                                     }                                

                                                                                            }                                

                                                                                    });                     

                                                                            }               

                                  }       

                         });       

                 }       

        public
static void main(String[] args) {   

                 RPG_GUI
rpg=new RPG_GUI();                

                 rpg.frame();             

                 rpg.get_Information();    

                 rpg.get_Race();                

                 rpg.game();              

                 }

}


Save 保存信息到文件中:



package com.rpg.game;

import java.io.FileWriter;

import java.io.IOException;

public class Save {

        public
static final String NEW_LINE = System.getProperty("line.separator");

        //
获取系统的换行符   

        public
static final String FILE_PATH = "E:/users.txt";

        //指定文件的路径 //方法:保存信息到文件 

        public
boolean saveInfo(String info) {    

                 FileWriter
fw;      

                 try
{           

                         fw
= new FileWriter(FILE_PATH, true);

                         //追加文字到文件尾部   

                         fw.write(info);    

                         fw.close();    

                         }
catch (IOException e) {  
e.printStackTrace();  

                         return
false;//IO异常,保存不成功        

                         }             

                 return
true;//保存成功    

        }

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值