如何用面向对象设计一个程序,经典推荐? - rufeng2000的回答 - 知乎 https://www.zhihu.com/question/36113705/answer/2405176382

目的 Link to heading

学习并实践socket编程

游戏选择 Link to heading

pong

联网逻辑设计 Link to heading

客户端:循环读取键盘输入,写入到发送缓冲区,并刷新位置,读取接收缓冲区刷新对方位置。 服务器:等待2个连接,当有2个连接后,循环读取A的接收缓冲区写到B的发送缓冲区,读取B的接收缓冲写到A的发送缓冲区。

打印逻辑 Link to heading

利用clear清屏再输出,但是必须在linux上

进展 Link to heading

221128 命令行无法获取按键按下的事件,必须回车后才能拿到按键,需要切换到GUI继续测试


import java.util.Scanner;


public class Pong {
	public int fieldLen;
	public int racketLen;
	public int racketPos;
	public Pong(int fieldLen, int racketLen, int racketPos) {
		this.fieldLen = fieldLen;
		this.racketLen = racketLen;
		this.racketPos = racketPos;
	}
	public void RacketUp() {
		if(this.racketPos<=0) {
			return;
		}
		this.racketPos--;
	}
	public void RacketDown() {
		if((this.racketPos+this.racketLen)>=this.fieldLen) {
			return;
		}
		this.racketPos++;
	}
	public void printRacket() {
		for(int i=0;i<racketPos;i++) {
			System.out.println("|");
		}
		for(int i=racketPos;i<racketPos+racketLen;i++) {
			System.out.println("||");
		}
		for(int i=racketPos+racketLen;i<fieldLen;i++) {
			System.out.println("|");
		}
	}
	public static void main(String[] args) {
		Pong pong = new Pong(10, 1, 5);
        Scanner input = new Scanner(System.in);
    	while(true) {
    		int number = input.nextInt();
            System.out.println(number);
            if(number==9) {
            	break;
            }
            if(number==1) {
            	pong.RacketUp();
            }else {
            	pong.RacketDown();
            }
            pong.printRacket();
    	}
        
        input.close();
	}
}