菜鸟先飞之java窗体养猪小游戏实习篇

拿到一个RPG小游戏的练习项目!
需求是要做控制台版本的
要有:
人物
怪物
NPC
战斗
背包
金钱
等属性…

做了一点…
感觉控制台版本的好low

还是窗体的有点意思。
不用说了,改行窗体。
但是好像没学过窗体,于是打开了万能的度娘,233。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190412165849194.
然后分分钟创建出一个空的窗体。
要做窗体需要继承一个叫JFrame 的类,网上搜了一下这个好像叫可视化开发,管他呢,只要能弄个框出来给我看就行了
然后要在窗体上创建一个画布

static JPanel h=new JPanel();//画布

虽然直接用JFrame的框也行,但是要关闭的话整个框都会关闭,所以放个画布上面,关闭的时候就只清除画布,然后下个面板将他重绘一下就好了。

static JButton b;//按钮
static JTextField t;//输入框
static JLabel i;//文字吧
这些是我这个项目里经常用的组建,按钮和文字都能插入图片,一般背景图都是用JLabel做的,就是将图片位置给到他,然后把他的优先级设置为min如下:
在这里插入图片描述

队了,好像忘说我的项目是啥了,听好了:
小猪佩奇养成系统
在这里插入图片描述
无与伦比的界面,让人看的心旷神怡。

接下来就是做个提示框
在这里插入图片描述
代码如下:
百度一下你就知道…
在这里插入图片描述
这是搜到了别人写的完善的提示框对应的代码。
在这里插入图片描述
这是我写的例子,if就是判断确认或取消之后发生的事件!

接下来都是用按钮啥的点击跳转,跳转的时候要将上一个窗口里写的所有控件和画布隐藏
在这里插入图片描述
大致就是这个样吧,a是按钮控件的名字,也就是在这里插入图片描述
*.setVisible(false);就是隐藏控件,控件太多的话建议写过方法,毕竟跳转的时候总是会用到

战斗场景就是做个动态窗体,然后通过坐标来触发事件

在这里插入图片描述
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

@SuppressWarnings(“serial”)
public class Yfield extends JFrame{

	MyPanel mp=null;
	public  void ma() {
		
		@SuppressWarnings("unused")
		Yfield pb=new Yfield();
	}
	public Yfield()
	{
		super.setResizable(false);
		mp=new MyPanel();
		this.add(mp);
		
		//事件监听
		this.addKeyListener(mp);
		this.setBounds(650,200,500,500);
		this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
		this.setVisible(true);

}
class MyPanel extends JPanel implements KeyListener
{
int x=10;
int y=10;
boolean im=true;
public void paint(Graphics g)
{
Icon icon=new ImageIcon("…/MyGame/img/Rpjbj.jpg");
JLabel i=new JLabel(icon);
i.setBounds(0, 0, 500, 500);
super.add(i,new Integer(Integer.MIN_VALUE));

		    super.paint(g);
		    Image image=Toolkit.getDefaultToolkit().getImage("../MyGame/img/np.jpg");
		    g.drawImage(image, x, y, 30,30, this);
		 
		    
		    Image image2=Toolkit.getDefaultToolkit().getImage("../MyGame/img/moj.jpg");
		    g.drawImage(image2, 100,100, 50,50, this);
		    
		    Image image3=Toolkit.getDefaultToolkit().getImage("../MyGame/img/npc.jpg");
		    g.drawImage(image3, 200,200, 30,50, this);
		    
		    if(im==true&&x>80&&x<150&&y>80&&y<150){
		    	im=false;
				int n = JOptionPane.showConfirmDialog(null, "发现一只野生的猪,是否战斗!", "警告", JOptionPane.YES_NO_OPTION);
				if (n == JOptionPane.YES_OPTION) { 
					
					Combat.combat();
					paint(g);
					} 
				else { 
					paint(g);
	    		   }
				
			}else if(im==false&&!(x>80&&x<150&&y>80&&y<150)){
            im=true;  
        }
		}
	 
		@Override//键被按下
		public void keyPressed(KeyEvent e) {
			//System.out.println("被按下"+(char)e.getKeyCode());
			switch(e.getKeyCode())
			{
				case KeyEvent.VK_UP:
					y-=2;
					//调用repaint()函数,重新绘制小球位置
					this.repaint();
					break;
				case KeyEvent.VK_DOWN:
					y+=2;
					//调用repaint()函数,重新绘制小球位置
					this.repaint();
					break;
				case KeyEvent.VK_LEFT:
					x-=2;
					//调用repaint()函数,重新绘制小球位置
					this.repaint();
					break;
				case KeyEvent.VK_RIGHT:
					x+=2;
					//调用repaint()函数,重新绘制小球位置
					this.repaint();
					break;
			}
			
		}
	 
		@Override//表示具体一个值被输出,例如:F1
		public void keyTyped(KeyEvent e) {
			// TODO Auto-generated method stub
			
		}
		@Override//键被释放
		public void keyReleased(KeyEvent e) {
			// TODO Auto-generated method stub
			
		}
	}
	}

代码如上,我也不是全部都清楚,监听移动啥的都是百度上Copy的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这是商城,虽然很丑,但是我找不到好看的图,屠宰场的图还是组长大发慈悲画的。

这次就这样吧,战斗场景还有bug我要去改改!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值