×

java小项目

java小项目(用JAVA编一个小游戏或者其他程序)

admin admin 发表于2023-10-24 18:35:19 浏览47 评论0

抢沙发发表评论

本文目录

用JAVA编一个小游戏或者其他程序

贪吃蛇程序:GreedSnake.java (也是程序入口):import java.awt.BorderLayout;import java.awt.Canvas;import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Iterator;import java.util.LinkedList;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class GreedSnake implements KeyListener { JFrame mainFrame; Canvas paintCanvas; JLabel labelScore;// 计分牌 SnakeModel snakeModel = null;// 蛇 public static final int canvasWidth = 200; public static final int canvasHeight = 300; public static final int nodeWidth = 10; public static final int nodeHeight = 10; // ---------------------------------------------------------------------- // GreedSnake():初始化游戏界面 // ---------------------------------------------------------------------- public GreedSnake() { // 设置界面元素 mainFrame = new JFrame(“GreedSnake“); Container cp = mainFrame.getContentPane(); labelScore = new JLabel(“Score:“); cp.add(labelScore, BorderLayout.NORTH); paintCanvas = new Canvas(); paintCanvas.setSize(canvasWidth + 1, canvasHeight + 1); paintCanvas.addKeyListener(this); cp.add(paintCanvas, BorderLayout.CENTER); JPanel panelButtom = new JPanel(); panelButtom.setLayout(new BorderLayout()); JLabel labelHelp;// 帮助信息 labelHelp = new JLabel(“PageUp, PageDown for speed;“, JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.NORTH); labelHelp = new JLabel(“ENTER or R or S for start;“, JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.CENTER); labelHelp = new JLabel(“SPACE or P for pause“, JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.SOUTH); cp.add(panelButtom, BorderLayout.SOUTH); mainFrame.addKeyListener(this); mainFrame.pack(); mainFrame.setResizable(false); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setVisible(true); begin(); } // ---------------------------------------------------------------------- // keyPressed():按键检测 // ---------------------------------------------------------------------- public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); if (snakeModel.running) switch (keyCode) { case KeyEvent.VK_UP: snakeModel.changeDirection(SnakeModel.UP); break; case KeyEvent.VK_DOWN: snakeModel.changeDirection(SnakeModel.DOWN); break; case KeyEvent.VK_LEFT: snakeModel.changeDirection(SnakeModel.LEFT); break; case KeyEvent.VK_RIGHT: snakeModel.changeDirection(SnakeModel.RIGHT); break; case KeyEvent.VK_ADD: case KeyEvent.VK_PAGE_UP: snakeModel.speedUp();// 加速 break; case KeyEvent.VK_SUBTRACT: case KeyEvent.VK_PAGE_DOWN: snakeModel.speedDown();// 减速 break; case KeyEvent.VK_SPACE: case KeyEvent.VK_P: snakeModel.changePauseState();// 暂停或继续 break; default: } // 重新开始 if (keyCode == KeyEvent.VK_R || keyCode == KeyEvent.VK_S || keyCode == KeyEvent.VK_ENTER) { snakeModel.running = false; begin(); } } // ---------------------------------------------------------------------- // keyReleased():空函数 // ---------------------------------------------------------------------- public void keyReleased(KeyEvent e) { } // ---------------------------------------------------------------------- // keyTyped():空函数 // ---------------------------------------------------------------------- public void keyTyped(KeyEvent e) { } // ---------------------------------------------------------------------- // repaint():绘制游戏界面(包括蛇和食物) // ---------------------------------------------------------------------- void repaint() { Graphics g = paintCanvas.getGraphics(); // draw background g.setColor(Color.WHITE); g.fillRect(0, 0, canvasWidth, canvasHeight); // draw the snake g.setColor(Color.BLACK); LinkedList na = snakeModel.nodeArray; Iterator it = na.iterator(); while (it.hasNext()) { Node n = (Node) it.next(); drawNode(g, n); } // draw the food g.setColor(Color.RED); Node n = snakeModel.food; drawNode(g, n); updateScore(); } // ---------------------------------------------------------------------- // drawNode():绘画某一结点(蛇身或食物) // ---------------------------------------------------------------------- private void drawNode(Graphics g, Node n) { g.fillRect(n.x * nodeWidth, n.y * nodeHeight, nodeWidth - 1, nodeHeight - 1); } // ---------------------------------------------------------------------- // updateScore():改变计分牌 // ---------------------------------------------------------------------- public void updateScore() { String s = “Score: “ + snakeModel.score; labelScore.setText(s); } // ---------------------------------------------------------------------- // begin():游戏开始,放置贪吃蛇 // ---------------------------------------------------------------------- void begin() { if (snakeModel == null || !snakeModel.running) { snakeModel = new SnakeModel(this, canvasWidth / nodeWidth, this.canvasHeight / nodeHeight); (new Thread(snakeModel)).start(); } } // ---------------------------------------------------------------------- // main():主函数 // ---------------------------------------------------------------------- public static void main(String args) { GreedSnake gs = new GreedSnake(); }}Node.java:public class Node { int x; int y; Node(int x, int y) { this.x = x; this.y = y; }}SnakeModel.java:import java.util.Arrays;import java.util.LinkedList;import java.util.Random;import javax.swing.JOptionPane;public class SnakeModel implements Runnable { GreedSnake gs; boolean matrix;// 界面数据保存在数组里 LinkedList nodeArray = new LinkedList(); Node food; int maxX;// 最大宽度 int maxY;// 最大长度 int direction = 2;// 方向 boolean running = false; int timeInterval = 200;// 间隔时间(速度) double speedChangeRate = 0.75;// 速度改变程度 boolean paused = false;// 游戏状态 int score = 0; int countMove = 0; // UP和DOWN是偶数,RIGHT和LEFT是奇数 public static final int UP = 2; public static final int DOWN = 4; public static final int LEFT = 1; public static final int RIGHT = 3; // ---------------------------------------------------------------------- // GreedModel():初始化界面 // ---------------------------------------------------------------------- public SnakeModel(GreedSnake gs, int maxX, int maxY) { this.gs = gs; this.maxX = maxX; this.maxY = maxY; matrix = new boolean); return new Node(x, y); } // ---------------------------------------------------------------------- // speedUp():加快蛇运动速度 // ---------------------------------------------------------------------- public void speedUp() { timeInterval *= speedChangeRate; } // ---------------------------------------------------------------------- // speedDown():放慢蛇运动速度 // ---------------------------------------------------------------------- public void speedDown() { timeInterval /= speedChangeRate; } // ---------------------------------------------------------------------- // changePauseState(): 改变游戏状态(暂停或继续) // ---------------------------------------------------------------------- public void changePauseState() { paused = !paused; }}

JAVA小型项目开发

程序我已经封装好了,并且有使用样例,你照着用应该就差不多了如果说是主窗口的方法,在设置构造函数的时候可以添加一个主窗口类型的参数,实例化的时候在主窗口new ClockLabel(“00:00:05“,this);将主窗口作为参数传进去,然后你就能在时钟类里调用主窗口的方法了。注释的已经很详细了,时钟类代码如下:import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.Timer;import com.sun.org.apache.bcel.internal.generic.RETURN;public class ClockLabel extends JLabel implements ActionListener {private int hour = 0;private int min = 0;private int sec = 0;private Timer t;private String timeStr;private boolean finish = false;// 判断考试是否结束标志位,当值为false的时候考试结束public ClockLabel() {// TODO Auto-generated constructor stubinit();}public ClockLabel(String timeStr) {//参数为考试时间init();setTime(timeStr);}private void init() {t = new Timer(1000, this);// 初始化计时器}private boolean begain() {// 请输入考试时间,例如:\“01:00:00\“if (!checkStr())return false;hour = Integer.parseInt(timeStr.substring(0, 2));min = Integer.parseInt(timeStr.substring(3, 5));sec = Integer.parseInt(timeStr.substring(6));finish = true;//初始化结束标志位showTime();return true;}private boolean checkStr() {// 检测考试时间是否符合格式if (timeStr == null) {System.out.println(“尚未设置考试时间“);return false;}if (!timeStr.matches(“\\d{2}:\\d{2}:\\d{2}“)) {// 格式可以根据你的需求自己修改System.out.println(“输入的时间格式不正确“);// 显示在控制台的提示语句return false;}return true;}public void setTime(String timeStr) {//设置考试时间this.timeStr = timeStr;if (!begain())System.out.println(“时间设置不正确,初始化失败“);}public boolean timeStart() {// 考试开始方法,返回值为true表示开始成功if (finish) {//如果考试没有结束,继续开始计时t.start();return true;} elseJOptionPane.showMessageDialog(null, “考试已经结束!“);return false;}public boolean timeStop() {// 预设的暂停考试方法,返回值为true表示暂停成功if (finish) {t.stop();return true;} elseJOptionPane.showMessageDialog(null, “考试已经结束!“);return false;}public boolean resetTime() {// 重置考试时间为初始状态的方法return begain();}public void showTime() {// 在label上显示时间的方法String str = ““;if (hour 《 10)str += “0“;str += hour + “:“;if (min 《 10)str += “0“;str += min + “:“;if (sec 《 10)str += “0“;str += sec;this.setText(“剩余时间:“ + str);}@Overridepublic void actionPerformed(ActionEvent ae) {// 时钟计时事件sec--;if (sec == -1) {sec = 59;min--;if (min == -1) {min = 59;hour--;if (hour == -1) {t.stop();finish = false;//考试结束,修改标志位JOptionPane.showMessageDialog(getParent(), “考试结束!“);//自动交卷方法设置处return;}}}if (hour == 0 && min == 5 && sec == 0){//默认方法是将显示内容设置为提示语句,可自行更改this.setText(“离考试结束还有5分钟!!!“);}elseshowTime();}}使用样例类代码如下:import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class ClockLabelDemo extends JFrame {private ClockLabel clockLabel;private JPanel pane1, pane2;private JButton button1, button2;public ClockLabelDemo() {// TODO Auto-generated constructor stubthis.setSize(200, 100);Toolkit toolkit = Toolkit.getDefaultToolkit();Dimension scrnsize; scrnsize = toolkit.getScreenSize();setLocation(scrnsize.width / 2 - getWidth() / 2,scrnsize.height / 2 - getHeight() / 2);this.setDefaultCloseOperation(EXIT_ON_CLOSE);clockLabel = new ClockLabel(“00:00:05“);// 请输入考试时间,例如:\“01:00:00\“button1 = new JButton(“开始考试“);button2 = new JButton(“暂停考试“);pane1 = new JPanel();pane2 = new JPanel();pane1.add(clockLabel);pane2.setLayout(new FlowLayout());pane2.add(button1);pane2.add(button2);this.add(pane1, BorderLayout.CENTER);this.add(pane2, BorderLayout.SOUTH);button1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubclockLabel.timeStart();}});button2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubclockLabel.timeStop();}});this.setVisible(true);}public static void main(String args) {new ClockLabelDemo().setVisible(true);}}

有没有适合java初学者的小项目,综合性比较强的,web后端,推荐几个,面试用

1、注册登录系统,几乎每个网站都会有这个模块,是初学者不可绕过项目,的一定要了然于心,无论是servlet+jdbc实现,还是struts2+hibernate实现都要滚瓜烂熟2、网上商城,里面包含两个经典的模块,购物车和在线支付,这个项目是初学者第一个项目的不二之选3、在线相册系统,涉及到文件的上传下载,这考验你对JavaIO的熟悉程度,也是很不错的选择4、其外,你还可以做一下图书管理系统,就是模仿图书馆的管理系统,也很考验人最后:只要你遵循MVC的设计理念,搞懂各层之间的传值方法,面试就不会慌

做一个java小项目

一个简单的小项目?是玩具程序,对吧。Java 中最经典的小程序之一是生产者消费者(producer consumer)—— hanoi tower。你可以玩玩而已。1.数到三,然后退到一,经典的面向对象程序。一群孩子围成一个圈,一个一个数。数到三的孩子退出,继续朝同一个方向数。规则还是一样的。程序,通过输入参数(子代数) ,输出最后剩余子代的位置。需求,以面向对象的方式编写。图2。生产者消费者,经典的线程问题。有一个篮子,有一群主人,有一群食客。主人做了面包,不停地把它们放进篮子里。与此同时,食客们从篮子里拿出面包吃掉了。如果篮子里没有馒头,食客将被停止吃馒头,如果篮子里的馒头满了,主人将停止馒头的生产。模拟这个进程,要用多线程实现。图3。河内塔,河内塔游戏模拟通过程序,找到自己的规则,一看就知道了。要求,输入塔层数,输出最小步数完成游戏。需要递归算法!简捷挣副业平台

求JAVA小项目的完整代码

给你个做好了的Java的源程序的记事本,自己看看就行了的,不怎么难的···import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;public class MyNotepad implements ActionListener{ private JFrame frame=new JFrame(“新记事本“); private JTextArea jta=new JTextArea(); private String result=““; private boolean flag=true; private File f; private JButton jb=new JButton(“开始“); private JTextField jtf=new JTextField(15); private JTextField jt=new JTextField(15); private JButton jbt=new JButton(“替换为“); private JButton jba=new JButton(“全部替换“); private Icon ic=new ImageIcon(“D:\\java课堂笔记\\GUI\\11.gif“); private String value; private int start=0; private JFrame jf=new JFrame(“查找“); private JFrame jfc=new JFrame(“替换“); @Override public void actionPerformed(ActionEvent e) { String comm=e.getActionCommand(); if(“新建“.equals(comm)){ if(!(frame.getTitle().equals(“新记事本“))){ if(!flag){ write(); newNew(); }else{ JFileChooser jfc=new JFileChooser(“D:\\java课堂笔记“); int returnVal = jfc.showDialog(null,“保存为“); if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性 f=jfc.getSelectedFile(); flag=false; write(); } } }else if(!(jta.getText().isEmpty())){ JFileChooser jfc=new JFileChooser(“D:\\java课堂笔记“); int returnVal = jfc.showDialog(null,“保存为“); if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性 f=jfc.getSelectedFile(); flag=false; write(); newNew(); } }else{ newNew(); } }else if(“打开“.equals(comm)){ JFileChooser jfc=new JFileChooser(“D:\\java课堂笔记“); jfc.setDialogType(JFileChooser.OPEN_DIALOG); int returnVal = jfc.showOpenDialog(null); if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性 f=jfc.getSelectedFile(); frame.setTitle(f.getName()); result=read(); flag=false; value=result; jta.setText(result); } }else if(“保存“.equals(comm)){ JFileChooser jfc=new JFileChooser(“D:\\java课堂笔记“); if(flag){ int returnVal = jfc.showDialog(null,“保存为“); if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性 f=jfc.getSelectedFile(); flag=false; write(); } }else{ write(); } }else if(“另存“.equals(comm)){ JFileChooser jfc=new JFileChooser(“D:\\java课堂笔记“); int returnVal = jfc.showDialog(null,“另存“); if(returnVal == JFileChooser.APPROVE_OPTION) {//选择文件后再执行下面的语句,保证了程序的健壮性 f=jfc.getSelectedFile(); write(); } }else if(“退出“.equals(comm)){ System.exit(0); }else if(“撤销“.equals(comm)){ jta.setText(value); }else if(“剪切“.equals(comm)){ value=jta.getText(); jta.cut(); }else if(“复制“.equals(comm)){ jta.copy(); }else if(“粘贴“.equals(comm)){ value=jta.getText(); jta.paste(); }else if(“删除“.equals(comm)){ value=jta.getText(); jta.replaceSelection(null); }else if(“全选“.equals(comm)){ jta.selectAll(); }else if(“查找“.equals(comm)){ value=jta.getText(); jf.add(jtf,BorderLayout.CENTER); jf.add(jb,BorderLayout.SOUTH); jf.setLocation(300,300); jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }else if(“替换“.equals(comm)){ value=jta.getText(); GridLayout gl=new GridLayout(3,3); JLabel jl1=new JLabel(“查找内容:“); JLabel jl2=new JLabel(“替换为:“); jfc.setLayout(gl); jfc.add(jl1); jfc.add(jtf); jfc.add(jb); jfc.add(jl2); jfc.add(jt); jfc.add(jbt); JLabel jl3=new JLabel(); JLabel jl4=new JLabel(); jfc.add(jl3); jfc.add(jl4); jfc.add(jba); jfc.setLocation(300,300); jfc.pack(); jfc.setVisible(true); jfc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }else if(“版本“.equals(comm)){ JDialog jd=new JDialog(frame,“关于对话框“); jd.setSize(200,200); JLabel l=new JLabel(“哈哈哈哈哈哈哈哈哈哈呵呵呵呵呵呵呵呵呵呵呵呵呵“); jd.add(l,BorderLayout.CENTER); jd.setLocation(100,200); jd.setSize(300,300); jd.setVisible(true);// jd.pack(); jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); }else if(“开始“.equals(comm)||“下一个“.equals(comm)){ String temp=jtf.getText(); int s=value.indexOf(temp,start); if(value.indexOf(temp,start)!=-1){ jta.setSelectionStart(s); jta.setSelectionEnd(s+temp.length()); jta.setSelectedTextColor(Color.GREEN); start=s+1; jb.setText(“下一个“);// value=value.substring(s+temp.length());//不能截取字串 }else { JOptionPane.showMessageDialog(jf, “查找完毕!“, “提示“, 0, ic); jf.dispose(); } }else if(“替换为“.equals(comm)){ String temp=jtf.getText(); int s=value.indexOf(temp,start); if(value.indexOf(temp,start)!=-1){ jta.setSelectionStart(s); jta.setSelectionEnd(s+temp.length()); jta.setSelectedTextColor(Color.GREEN); start=s+1; jta.replaceSelection(jt.getText()); }else { JOptionPane.showMessageDialog(jf, “查找完毕!“, “提示“, 0, ic); jf.dispose(); } }else if(“全部替换“.equals(comm)){ String temp=jta.getText(); temp=temp.replaceAll(jtf.getText(), jt.getText()); jta.setText(temp); } } public String read(){ String temp=““; try { FileInputStream fis = new FileInputStream(f.getAbsolutePath()); byte b=new byte; while(true){ int num=fis.read(b); if(num==-1)break; temp=temp+new String(b,0,num); } fis.close(); } catch (Exception e1) { e1.printStackTrace(); } return temp; } public void write(){ try { FileOutputStream fos=new FileOutputStream(f); fos.write(jta.getText().getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } public void newNew(){ frame.dispose(); new MyNotepad(); flag=true; } public MyNotepad(){ JMenuBar jmb=new JMenuBar(); String menuLab={“文件“,““,“帮助“}; String menuItemLab={{“新建“,“打开“,“保存“,“另存“,“退出“}, {“撤销“,“剪切“,“复制“,“粘贴“,“删除“,“全选“,“查找“,“替换“}, {“版本“}}; for(int i=0;i《menuLab.length;i++){ JMenu menu=new JMenu(menuLab); menu.add(jmi); jmi.addActionListener(this); } } frame.setJMenuBar(jmb); jta.setLineWrap(true);//自动换行 JScrollPane jsp=new JScrollPane(jta);//滚动窗口面板 frame.add(jsp); jb.addActionListener(this); jbt.addActionListener(this); jba.addActionListener(this); frame.setLocation(200,50); frame.setSize(620,660); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String args) { new MyNotepad(); }}