JAVA基础课程设计 简易坦克大战

该博客介绍了一项JAVA基础课程设计项目——简易坦克大战。内容包括工程的结构,如Bullet.java和keylistener.java文件,以及程序的运行界面展示。
摘要由CSDN通过智能技术生成

工程的结构如下:

类名

父类/接口

功能

Paly

void

音频播放

Wel_Panel

JPanel

欢迎界面

keylistener

KeyAdapter

键盘监听

PC_tank

Runnable

电脑坦克的控制

T_Bullet

Runnable

子弹的控制

Test

void

主函数入口各类的组装

A_tank

JPanel

左方向坦克的绘制

D_tank

JPanel

右方向坦克的绘制

S_tank

JPanel

下方向坦克的绘制

W_tank

JPanel

上方向坦克的绘制

Bullet

JPanel

子弹的绘制


Bullet.java:

package draw_gra;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Bullet extends JPanel
{
	int x;
	public Bullet(int i)
	{
		x=i;
		
	}
	@Override
	public void paint(Graphics g)
	{
		// TODO Auto-generated method stub
		if(x==0)
			g.setColor(Color.GREEN);
		else
			g.setColor(Color.red);
		g.fillOval(0, 0, 5, 5);
	}
}

paly.java:

package draw_gra;

import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;

public class Paly {
	private static AudioInputStream audioInputStream;
	private static AudioFormat audioFormat;
	private static SourceDataLine res;




	public  Paly(File file) throws UnsupportedAudioFileException, IOException, LineUnavailableException 
		 {
		audioInputStream = AudioSystem.getAudioInputStream(file);//得到要播放的文件的音频输入流
		audioFormat = audioInputStream.getFormat();//音频流的

		res = AudioSystem.getSourceDataLine(audioFormat);//得到输出设备对象
		
		res.open(audioFormat);//打开输出设备
//		res.open();
		res.start();//开始播放
		
		int inBytes = 0;
		byte[] audioData = new byte[1024*200];//缓冲区
		while ((inBytes != -1)) {
			inBytes = audioInputStream.read(audioData, 0, audioData.length);//从音频输入流读取音频数据到缓冲区

			if (inBytes >= 0) {//把音频数据写入到输出设备
				res.write(audioData, 0, inBytes);
			}
		}
		res.drain();//直到输出设备对象缓冲区的数据被输出,返回。加上这句,能完整的输出整个音频流
		res.close();//关闭输出设备
		audioInputStream.close();//关闭音频流
	}
}

Wel_Panel.java

package draw_gra;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Wel_Panel extends JPanel
{
	JFrame frame;
	JPanel Tank;
	public Wel_Panel(JFrame fra,JPanel tank)
	{
		frame=fra;
		Tank=tank;
		ImageIcon bg =new ImageIcon("./res/wel.png");
		JLabel label=new JLabel(bg,JLabel.CENTER);
		this.setLayout(new BorderLayout());
		label.setBounds(0,0,bg.getIconWidth() ,bg.getIconHeight());
		this.add(label,BorderLayout.CENTER);
		JButton btn=new JButton();
		btn.setIcon(bg);
		this.add(btn);
		btn.addMouseListener(new MouseAdapter(){

			@Override
			public void mouseClicked(MouseEvent e)
			{
				// TODO Auto-generated method stub
				if(e.getButton()==MouseEvent.BUTTON1)
					((CardLayout)frame.getContentPane().getLayout()).show(frame.getContentPane(), "Game");
				Tank.requestFocus();
			}
			
		});
	}	

}


keylistener.java:

package tank_war;

import java.awt.CardLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class keylistener extends KeyAdapter
{
	

	private JPanel Game;
	private JPanel panel;			//玩家坦克
	private static int x;			//记录tank方向
	private ArrayList<PC_tank> pctanks;
	public keylistener(JPanel Game1, JPanel panel2,ArrayList pcs)
	{
		// TODO Auto-generated constructor stub
		Game=Game1;
		panel=panel2;
		x=3;
		pctanks=pcs;
	}
	
	@Override
	public void keyPressed(KeyEvent e)
	{
		// TODO Auto-generated method stub
		super.keyPressed(e);
		if(panel.getX()==0&&e.getKeyCode()==KeyEvent.VK_A)			//防止越界
			return ;
		if(panel.getY()==0&&e.getKeyCode()==KeyEvent.VK_W)
			return ;
		if(panel.getX()>460&&e.getKeyCode()==KeyEvent.VK_D)
			return ;
		if(panel.getY()>460&&e.getKeyCode()==KeyEvent.VK_S)
			return ;
		switch(e.getKeyCode())
			{
			case KeyEvent.VK_W:
				panel.setLocation(panel.getX(),panel.getY() -2);
				((CardLayout)panel.getLayout()).show(panel, "W");
				x=1;
				break;
			case KeyEvent.VK_A:
				((CardLayout)panel.getLayout()).show(panel, "A");
				panel.setLocation(panel.getX()-2,panel.getY() );
				x=2;
				break;
			case KeyEvent.VK_S:
				panel.setLocation(panel.getX(),panel.getY() +2);
				((CardLayout)panel.getLayout()).show(panel, "S");
				x=3;
				break;
			case KeyEvent.VK_D:
				((CardLayout)panel.getLayout()).show(panel, "D");
				panel.setLocation(panel.getX()+2,panel.getY() );
				x=4;
				break;
			case KeyEvent.VK_J:								
				T_Bullet t_bullet=new T_Bullet(panel,Game,x,pctanks,null);		//玩家坦克发子弹,目标:pctanks
				new Thread(t_bullet,"b1").start();
				break;

			}
		Game.repaint();				//重绘窗口
	}
	

}

PC_tank.java

package tank_war;

import java.awt.*;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;

import tank4T.A_tank;
import tank4T.D_tank;
import tank4T.S_tank;
import tank4T.W_tank;

public class PC_tank implements Runnable  
{

	private JPanel Game;
	public JPanel tank;
	private JPanel usrtank;
	PC_tank(JPanel mf,JPanel usr)
	{
		Game = mf;
		usrtank=usr;
		tank=new JPanel();
		tank.setLayout(new CardLayout());
		tank.add("W",new W_tank(0));
		tank.add("A",new A_tank(0));
		tank.add("S",new S_tank(0));
		tank.add("D",new D_tank(0));
		tank.setBounds(200, 200, 30, 30);
		Game.add(tank);
	}

	@Override
	public void run()
	{
		// TODO Auto-generated method stub
		int x=1;
		Random r = new Random();
		while (true)
		{
			int rom=r.nextInt(5);
			if(rom==0)
			{
				for(int i=r.nextInt(20);i>0;i--)
				{
					if(tank.getY()-10<10)
						continue;
					tank.setLocation(tank.getX(),tank.getY() - 10);
					((CardLayout)tank.getLayout()).show(tank, "W");
					Game.repaint();
					try
					{
						Thread.sleep(300);
					} catch (InterruptedException e)
					{
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				x=1;
			}
			if(rom==1)
			{
				for(int i=r.nextInt(20);i>0;i--)
				{

					if(tank.getX()-10<0)
							continue;
					tank.setLocation(tank.getX() - 10,tank.getY());
					((CardLayout)tank.getLayout()).show(tank, "A");
					Game.repaint();
					try
					{
						Thread.sleep(300);
					} catch (InterruptedException e)
					{
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				x=2;
			}
			if(rom==2)
			{
				for(int i=r.nextInt(20);i>0;i--)
				{
					if(tank.getY()+10>470)
							continue;
					tank.setLocation(tank.getX(),tank.getY() +10);
					((CardLayout)tank.getLayout()).show(tank, "S");
					Game.repaint();
					try
					{
						Thread.sleep(300);
					} catch (InterruptedException e)
					{
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				x=3;
			}
			if(rom==3)
			{
				for(int i=r.nextInt(20);i>0;i--)
				{
					if(tank.getX()>470)
						continue;
					tank.setLocation(tank.getX() + 10,tank.getY());
					((CardLayout)tank.getLayout()).show(tank, "D");			
					Game.repaint();
					try
					{
						Thread.sleep(300);
					} catch (InterruptedException e)
					{
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				x=4;
			}
			if(rom==4)
			{
				T_Bullet t_bullet=new T_Bullet(tank,Game,x,null,usrtank);		//计算机发射发射子弹,目标:usrtank
				new Thread(t_bullet,"p1").start();
			}
			
			try
			{
				Thread.sleep(500);
			} catch (InterruptedException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		if(tank.getParent()==null)			//如果该坦克以被移出Game,结束
			return ;
		Game.repaint();
		}


	}

}

T_Bullet.java:

package tank_war;

import java.awt.FlowLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.ListIterator;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;

import draw_gra.Bullet;
public class T_Bullet implements Runnable
{
	JPanel tank;						//发射子弹的坦克
	Bullet bullet;
	JPanel Game;
	int dir;
	ArrayList <PC_tank>pctanks;			//目标:计算机坦克
	JPanel usrtank;					//目标:玩家坦克
	static Object lock=new Object();
	@SuppressWarnings({ "rawtypes", "unchecked" })
	T_Bullet(JPanel panel,JPanel fra,int d,ArrayList pcs,JPanel usr)			//方向1->W; 2->A; 3->S; 4->D
	{
		tank=panel;
		usrtank=usr;
		dir=d;
		Game=fra;
		pctanks=pcs;
	}
	@Override
	public void run()
	{
		// TODO Auto-generated method stub
//		bullet=new Bullet(tank.getX(),tank.getY());
		if(usrtank==null)
			bullet=new Bullet(0);
		else
			bullet=new Bullet(1);
		bullet.setLayout(null);
//		bullet.setBounds(tank.getX(),tank.getY(),20,20);
		switch(dir)
		{
		case 1:bullet.setBounds(tank.getX()+10,tank.getY(),5,5);
		break;
		case 2:bullet.setBounds(tank.getX(),tank.getY()+10,5,5);
		break;
		case 3:bullet.setBounds(tank.getX()+10,tank.getY(),5,5);
		break;
		case 4:bullet.setBounds(tank.getX(),tank.getY()+10,5,5);
		break;
		}
		Game.add(bullet);
		while(bullet.getParent()!=null)
		{
			switch(dir)
			{
			case 1:bullet.setLocation(bullet.getX(), bullet.getY()-5);
			break;
			case 2:bullet.setLocation(bullet.getX()-5, bullet.getY());
			break;
			case 3:bullet.setLocation(bullet.getX(), bullet.getY()+5);
			break;
			case 4:bullet.setLocation(bullet.getX()+5, bullet.getY());
			break;
			}
			try
			{
				Thread.sleep(100);
			} catch (InterruptedException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			if(usrtank==null)
			{
				ListIterator<PC_tank> it=pctanks.listIterator();
				synchronized(lock)
				{
					while(it.hasNext())
					{
						PC_tank obj=it.next();
						if(Math.abs(bullet.getX()-obj.tank.getX())<20&&Math.abs(bullet.getX()-obj.tank.getX())>10
						&&Math.abs( bullet.getY()-obj.tank.getY()    )<20
						)
						{
						//	obj.tank.setVisible(false);				//坦克消失
							it.remove();
							pctanks.remove(it);
							Game.remove(obj.tank);				//移出frame
							Game.remove(bullet);					//子弹消失
							
						}
					}
				}
			}
			else
			{

				if( Math.abs(bullet.getX()-usrtank.getX() )<20
				&&Math.abs(bullet.getY()-usrtank.getY())<20	)
				{
	//				usrtank.setVisible(false);			//游戏结束
					Game.remove(usrtank);
					
				}
				
			}
			Game.repaint();
		}
	}
}

Test.java:

package tank_war;

import java.awt.CardLayout;
import java.awt.Color;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.JFrame;
import javax.swing.JPanel;

import draw_gra.Paly;
import draw_gra.Wel_Panel;
import tank4T.A_tank;
import tank4T.D_tank;
import tank4T.S_tank;
import tank4T.W_tank;

public class Test
{
	
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		ArrayList <PC_tank>list=new ArrayList<PC_tank>();
		JPanel Game_Panel=new JPanel();
		Game_Panel.setBounds(0, 0, 500,500);
		Game_Panel.setVisible(true);
		Game_Panel.setLayout(null);
		Game_Panel.setBackground(Color.black);
		JFrame frame=new JFrame("Tank_War");

		frame.setSize(500, 500);
		frame.setResizable(false);
		frame.setLayout(new CardLayout());			//卡片				
		frame.setLocationRelativeTo(null);
		frame.getContentPane().setBackground(Color.black);


		JPanel Tank=new JPanel(new CardLayout());		//卡片布局

		Wel_Panel wel_panel=new Wel_Panel(frame,Tank);
		wel_panel.setVisible(true);
		wel_panel.setBounds(0, 0, 500, 500);
		Tank.setBounds(0, 0, 30, 30);
		Tank.add("S",new S_tank(1));				//下
		Tank.add("W",new W_tank(1));			//上
		Tank.add("A",new A_tank(1));				//左
		Tank.add("D",new D_tank(1));				//右	
		Game_Panel.add(Tank);
		Tank.addKeyListener(new keylistener(Game_Panel,Tank,list));
		frame.setVisible(true);

		frame.add("Wel",wel_panel);
		frame.add("Game",Game_Panel);
		Tank.requestFocus();		//获得键盘焦点
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		while(list.size()<10)				//添加电脑坦克
		{
			PC_tank pc_tank=new PC_tank(Game_Panel,Tank);
			new Thread(pc_tank,"pc").start();
			list.add(pc_tank);
		}
		 try
		{
			new Paly(new File("./res/start.wav"));
		} catch (UnsupportedAudioFileException | IOException
				| LineUnavailableException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
	}

		

}

A_tank.java:

package tank4T;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class A_tank extends JPanel
{
		
	public A_tank(int s)					//s==1 for:usr  s==0 for pc
	{
		if(s==1)
		{
			ImageIcon bg =new ImageIcon("./res/wa.jpeg");
			JLabel label=new JLabel(bg,JLabel.CENTER);
			this.setLayout(new BorderLayout());
			label.setBounds(0,0,bg.getIconWidth() ,bg.getIconHeight());
			this.add(label,BorderLayout.CENTER);
		}
		else
		{
			
			ImageIcon bg =new ImageIcon("./res/ya.jpeg");
			JLabel label=new JLabel(bg,JLabel.CENTER);
			this.setLayout(new BorderLayout());
			label.setBounds(0,0,bg.getIconWidth() ,bg.getIconHeight());
			this.add(label,BorderLayout.CENTER);
			
		}
	}
/*	public void paint(Graphics g)
	{
		// TODO Auto-generated method stub
		g.setColor(Color.BLUE);
		g.fillRect(0,0,20, 7);
		g.fillRect(0,21,20 , 7);
		g.setColor(Color.GREEN);
		g.fillOval(3, 7, 13, 13);
		g.setColor(Color.RED);
		g.drawLine(0, 13,10, 13);

	}*/
}

D_tank.java

package tank4T;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class A_tank extends JPanel
{
		
	public A_tank(int s)					//s==1 for:usr  s==0 for pc
	{
		if(s==1)
		{
			ImageIcon bg =new ImageIcon("./res/wa.jpeg");
			JLabel label=new JLabel(bg,JLabel.CENTER);
			this.setLayout(new BorderLayout());
			label.setBounds(0,0,bg.getIconWidth() ,bg.getIconHeight());
			this.add(label,BorderLayout.CENTER);
		}
		else
		{
			
			ImageIcon bg =new ImageIcon("./res/ya.jpeg");
			JLabel label=new JLabel(bg,JLabel.CENTER);
			this.setLayout(new BorderLayout());
			label.setBounds(0,0,bg.getIconWidth() ,bg.getIconHeight());
			this.add(label,BorderLayout.CENTER);
			
		}
	}
/*	public void paint(Graphics g)
	{
		// TODO Auto-generated method stub
		g.setColor(Color.BLUE);
		g.fillRect(0,0,20, 7);
		g.fillRect(0,21,20 , 7);
		g.setColor(Color.GREEN);
		g.fillOval(3, 7, 13, 13);
		g.setColor(Color.RED);
		g.drawLine(0, 13,10, 13);

	}*/
}

S_tank.java:

package tank4T;

import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

@SuppressWarnings({ "unused", "serial" })
public class S_tank extends JPanel
{
	

	public S_tank(int s)					//s==1 for:usr  s==0 for pc
	{
		if(s==1)
		{
			ImageIcon bg =new ImageIcon("./res/ws.jpeg");
			JLabel label=new JLabel(bg,JLabel.CENTER);
			this.setLayout(new BorderLayout());
			label.setBounds(0,0,bg.getIconWidth() ,bg.getIconHeight());
			this.add(label,BorderLayout.CENTER);
		}
		else
		{
			ImageIcon bg =new ImageIcon("./res/ys.jpeg");
			JLabel label=new JLabel(bg,JLabel.CENTER);
			this.setLayout(new BorderLayout());
			label.setBounds(0,0,bg.getIconWidth() ,bg.getIconHeight());
			this.add(label,BorderLayout.CENTER);
			
		}
	}
	/*public void paint(Graphics g)
	{
		// TODO Auto-generated method stub
		g.setColor(Color.BLUE);
		g.fillRect(0,0,7, 20);
		g.fillRect(21,0,7 , 20);
		g.setColor(Color.GREEN);
		g.fillOval(7, 3, 13, 13);
		g.setColor(Color.RED);
		g.drawLine(13, 10, 13, 20);

	}*/
	


}

W_tank.java

package tank4T;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class W_tank extends JPanel
{
	public W_tank(int s)
	{
		if(s==1)
		{
			ImageIcon bg =new ImageIcon("./res/ww.jpeg");
			JLabel label=new JLabel(bg,JLabel.CENTER);
			this.setLayout(new BorderLayout());
			label.setBounds(0,0,bg.getIconWidth() ,bg.getIconHeight());
			this.add(label,BorderLayout.CENTER);
		}
		else
		{
			
			ImageIcon bg =new ImageIcon("./res/yw.jpeg");
			JLabel label=new JLabel(bg,JLabel.CENTER);
			this.setLayout(new BorderLayout());
			label.setBounds(0,0,bg.getIconWidth() ,bg.getIconHeight());
			this.add(label,BorderLayout.CENTER);
			
		}
	}
	/*public void paint(Graphics g)
	{
		// TODO Auto-generated method stub
		g.setColor(Color.BLUE);
		g.fillRect(0,0,7, 20);
		g.fillRect(21,0,7 , 20);
		g.setColor(Color.GREEN);
		g.fillOval(7, 3, 13, 13);
		g.setColor(Color.RED);
		g.drawLine(13, 10, 13, 0);

	}*/
}

程序运行界面,,,简易...


第1章 记忆测试软件1.1. 设计内容1.2. 设计要求1.3. 总体设计1.4. 具体设计1.4.1. 运行效果与程序发布1.4.2. 主类Memory1.4.3. 方块 Block1.4.4. 记忆测试板MemoryTestPane1.4.5. 显示成绩 ShowRecord1.4.6. 记录成绩 Record1.4.7. 随机排列图标 RandomSetIcon1.4.8. 测试者 People1.5. 课程设计作业第2章 计算器2.1. 设计内容2.2. 设计要求2.3. 总体设计2.4. 具体设计2.4.1. 运行效果与程序发布2.4.2. 主类 ComputerPad2.4.3. 数值按钮NumberButton2.4.4. 运算符号按钮OperationButton2.5. 课程设计作业第3章 HANNOI-塔3.1. 设计内容3.2. 设计要求3.3. 总体设计3.4. 具体设计3.4.1. 运行效果与程序发布3.4.2. 主类 Tower3.4.3. Hannoi-塔 HannoiTower3.4.4. 塔点 TowerPoint3.4.5. 盘子 Disk3.5. 课程设计作业第4章 JPEG图象生成器4.1. 设计内容4.2. 设计要求4.3. 总体设计4.4. 具体设计4.4.1. 运行效果与程序发布4.4.2. 主类 MakeJPEG.java4.5. 课程设计作业第5章 标准化考试系统 (单机版)5.1. 设计内容5.2. 设计要求5.3. 总体设计5.4. 具体设计5.4.1. 运行效果与程序发布5.4.2. 主类EnglishTest5.4.3. 考试区域TestArea5.4.4. 读取试题 ReadTestquestion5.5. 课程设计作业第6章 标准化考试系统 (C/S网络版)6.1. 设计内容6.2. 设计要求6.3. 总体设计6.4. 具体设计6.4.1. 运行效果与程序发布6.4.2. 客户端主类Client6.4.3. 客户端选择试题界面ChoiceFile6.4.4. 客户端考试界面ClientTestArea6.4.5. 服务器端主类Server6.4.6. 服务器端读取试题 ReadTestquestion6.5. 课程设计作业第7章 标准化考试系统 (B/S网络版)7.1. 设计内容7.2. 设计要求7.3. 总体设计7.4. 具体设计7.4.1. 运行效果与程序发布7.4.2. 客户端主类ClientBS7.4.3. 客户端选择试题界面ChoiceFile7.4.4. 客户端考试界面ClientTestArea7.4.5. 服务器端主类Server7.4.6. 服务器端读取试题 ReadTestquestion7.5. 课程设计作业第8章 日历记事本8.1. 设计内容8.2. 设计要求8.3. 总体设计8.4. 具体设计8.4.1. 运行效果与程序发布8.4.2. 主类CalendarPad8.4.3. 记事本NotePad8.4.4. 年Year8.4.5. 月Month8.5. 课程设计作业18.6. 课程设计作业2第9章 学籍管理系统9.1. 设计内容9.2. 设计要求9.3. 总体设计9.4. 具体设计9.4.1. 运行效果与程序发布9.4.2. 主类StudentManager9.4.3. 录入界面StudentSituation9.4.4. 查询界面Inquest9.4.5. 修改界面ModifySituation9.4.6. 删除界面Delete9.4.7. 学生对象Student9.5. 课程设计作业第10章 图书查询系统 (B/S网络版)10.1. 设计内容10.2. 设计要求10.3. 总体设计10.4. 具体设计10.4.1. 运行效果与程序发布10.4.2. 客户端主类DatabaseClient10.4.3. 服务器端主类DatabaseServer10.5. 课程设计作业第11章 中国象棋打谱软件11.1. 设计内容11.2. 设计要求11.3. 总体设计11.4. 具体设计11.4.1. 运行效果与程序发布11.4.2. 主类 Chess11.4.3. 对弈棋盘ChessBoard11.4.4. 棋子ChessPiece11.4.5. 棋点 ChessPoint11.4.6. 走棋法则Rule11.4.7. 步骤MoveStep11.4.8. 记录棋谱MakeChessManual11.4.9. 棋谱演示Demon11.5. 课程设计作业111.6. 课程设计作业2第12章 魔板游戏12.1. 设计内容12.2. 设计要求12.3. 总体设计12.4. 具体设计12.4.1. 运行效果与程序发布12.4.2. 主类PuzzleFrame12.4.3. 魔板PuzzlePad12.4.4. 魔板中的点SquarePoint12.5. 课程设计作业第13章 挖雷游戏13.1. 设计内容13.2. 设计要求13.3. 总体设计13.4. 具体设计13.4.1. 运行效果与程序发布13.4.2. 主类Game13.4.3. 方块 Block13.4.4. 雷区 MineSquare13.4.5. 雷标数目 FindAroundMineMarkNumber13.4.6. 雷标判断 DetermineMineMarkIsRightOrWrong13.4.7. 成片挖开区域 DetermineDigArea13.4.8. 无雷连通区 FindSafeArea13.4.9. 随机布雷 RandomSetMine13.4.10. 周围地雷个数FindAroundMineNumber13.4.11. 显示剩余雷数CountMine13.4.12. 计时器TimeCount13.4.13. 英雄榜录入对话框Record13.4.14. 显示英雄榜对话框ShowRecord13.4.15. 挖雷成功DecideWinner13.5. 课程设计作业第14章 网络聊天室 (B/S模式)14.1. 设计内容14.2. 设计要求14.3. 总体设计14.4. 具体设计14.4.1. 运行效果与程序发布14.4.2. 客户端主类ClientChat14.4.3. 客户端输入妮称界面InputNameTextField14.4.4. 客户端聊天界面ChatArea14.4.5. 服务器端主类ChatServer14.5. 课程设计作业第15章 局域网络广播系统15.1. 设计内容15.2. 设计要求15.3. 总体设计15.4. 具体设计15.4.1. 运行效果与程序发布15.4.2. 客户端主类Receive15.4.3. 服务器端主类BroadCastWord15.5. 课程设计作业
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值