⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ball.java

📁 一个j2se内容
💻 JAVA
字号:
package com.cz.ball;

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.awt.event.*;
import java.util.EventListener;

public class Ball extends JFrame {
	int width = 300;
	int height = 400;
	
	Ball() {
		this.setSize(width , height);
		
		MyPanel mp = new MyPanel(width , height);
		
		this.add(mp);
		this.addKeyListener(mp);
	}
	public static void main(String[] args) {
		Ball w = new Ball();
		w.setVisible(true);
	}
}
class MyPanel extends JPanel implements Runnable , KeyListener {
	private int width;
	private int height;
	int xs = 30;
	int ys = 30;
	int xc = 250;
	int yc = 350;
	Socket s;
	boolean b = true;
	
	MyPanel(int width , int height) {
		this.width = width;
		this.height = height;
		
		Thread t = new Thread(this);
		t.start();
	}
	public void paint(Graphics g) {
		super.paint(g);
		this.setBackground(Color.BLACK);
		g.setColor(Color.RED);
		g.fillOval(xs , ys , 10 , 10);
		g.setColor(Color.BLUE);
		g.fillOval(xc , yc , 10 , 10);
	}
	public void run() {
		try {
			ServerSocket ss = new ServerSocket(8000);
			
			System.out.println("Server Start.....");
			b = true;
			s = ss.accept();
			
			InputStream is = s.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			
			while(true) {
				String xyc = br.readLine();
			//	System.out.println(xyc);
				xc = Integer.parseInt(xyc.split("%")[0]);
				yc = Integer.parseInt(xyc.split("%")[1]);
				
				repaint();
			}
		}
		catch(Exception ex) {
		//	ex.printStackTrace();
			try {
				b = false;
				s = new Socket("127.0.0.1" , 8000);
				
				InputStream is = s.getInputStream();
				InputStreamReader isr = new InputStreamReader(is);
				BufferedReader br = new BufferedReader(isr);
				
				while(true) {
					String xys = br.readLine();
				//	System.out.println(xys);
					xs = Integer.parseInt(xys.split("%")[0]);
					ys = Integer.parseInt(xys.split("%")[1]);
					
					repaint();
				}
			}
			catch(Exception ee) {
				
			}		
		}
	}
	public void keyTyped(KeyEvent e) {
		
	}
	public void keyPressed(KeyEvent e) {
		// 判断机制,无论在键盘敲下任何键都会激活该函数,函数运行后先判断true还是false
		// 然后才把得到的键盘与下面的对比。而不是你敲下相应的键它才运行
		// 例如b是true状态,而我敲下w,那它也会激活函数,然后判断b的值,嗯,是真,那它把w值与下面的四个键判断
		// 没有一个相等,则都不运行if语句中相应的代码,继续往下执行,到了System.out.println这句,并不会因为
		// 上面四个不相等而不运行,因为它在if(b)语句中而不包括在那四个键值里,所以它也会运行
		// 如果b是false状态,那也一样,当我敲下向上,那它检测到b是假那则把向上与下面的四个判断,都不一相等,那
		// 四个if中的语句则也都不运行,直接跑到System.out.println
		// 如果我们在这个函数里不写任何代码,只写一句system.exit(0)那可以想象我们随便敲任何一键它都会运行。
		try {
			OutputStream os = s.getOutputStream();
			OutputStreamWriter osw = new OutputStreamWriter(os);
			PrintWriter pw = new PrintWriter(osw , true);
			System.out.println(b);
			if(b) {
				if(e.getKeyCode() == KeyEvent.VK_UP) {
					ys--;
					
				}
				if(e.getKeyCode() == KeyEvent.VK_DOWN) {
					ys++;
				}
				if(e.getKeyCode() == KeyEvent.VK_LEFT) {
					xs--;
				}
				if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
					xs++;
				}
				System.out.println(xs + "%" + ys);
				pw.println(xs + "%" + ys);
			} else {
				if(e.getKeyCode() == KeyEvent.VK_W) {
					yc--;
				}
				if(e.getKeyCode() == KeyEvent.VK_S) {
					yc++;
				}
				if(e.getKeyCode() == KeyEvent.VK_A) {
					xc--;
				}
				if(e.getKeyCode() == KeyEvent.VK_D) {
					xc++;
				}
				System.out.println(xc + "%" + yc);
				pw.println(xc + "%" + yc);
			}
			repaint();
		}
		catch(Exception ex) {
			
		}
	}
	public void keyReleased(KeyEvent e) {
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -