当前位置:编程学习 > JAVA >>

求一份JAVA编程的课程设计

例如实现一个小游戏程序,要求代码300行左右!
补充:请问您编写的是一个什么程序,能否详细说明一下呢?
		
答案:
第一个类,服务器主线程类。 

package src;//定义一个包,存放JAVA文件。

import java.io.*;//导入JAVA包,输入输出流包
import java.net.*;//导入JAVA包,网络应用包

public class SocketServer extends Thread {//服务器主线程,负责为每个发出请求连接的客户端分配一个服务线程。

ServerSocket server;//定义一个对象

public SocketServer() { //该类的午餐构造方法,负责初始化服务器,监听6000端口

try {//捕捉异常的块

server = new ServerSocket(6000);//实例化对象
}
catch(IOException e) {//捕捉流异常

System.exit(0);//程序退出
}

this.start();//启动主线程

}

public void run() {//主线程的线程体

try {//捕捉异常的块

while(true) {//这里为TRUE,表示一直监听6000端口可

Socket client = server.accept();//为每个请求建立一个SOCKET
Service ss = new Service(client);//为每个SOCKET建立一个服务线程。 这里参考第二个类,SERVICE类
}
}
catch(IOException e) {//捕捉异常的块


System.exit(1);//程序退出
}
}
public static void main(String[] args) {//服务器程序入口,MAIN方法

new SocketServer();//这里直接创建一个主线程对象,因为初始化写再无参构造函数里面,所以这里直接就启动主线程了。
}
}


第二各类:服务器的服务线程类。

package src;//定义一个包,存放JAVA类

import java.io.*;//同上一个类
import java.net.*;//同上一个类

public class Service extends Thread {//这是服务于每个请求的服务线程类。

String data;//定义一个字符串

BufferedReader inputs;//输入流

PrintStream outputs;//输出流

Socket client;//定义一个SOCKET

public Service(Socket socket) {//定义有参构造方法,通过传入的SOCKET对象来为某一个请求服务。这里就是主线程调用的方法。

client = socket;//将传递过来的参数给刚定义的这个对象.

try {//捕捉异常的块

inputs = new BufferedReader(new InputStreamReader(client
.getInputStream()));//获取输入流
outputs = new PrintStream(client.getOutputStream());//获取输出流

} catch (IOException e) {


}
this.start();//启动服务线程。开始对客户服务。
}

public void run() {//线程的主要方法体

try {

while (true) {//表示一直侦听端口

data = inputs.readLine();//从输入流中读取客户发来的消息,并赋值给DATA
int res = (int) (Math.random() * 3);// 1是石头2是剪刀3布 系统随机生成三个数字,分别表示游戏的三个出拳状态
if (data == null)//如果读取到的数据是空值,就不再继续下一步操作。
break;
else {//如果读取到的不是空,则进行比较



if (res == 0 && "石头".equals(data)) {

data = "电脑也是石头,打平了!!";
} else if (res == 0 && "剪刀".equals(data)) {

data = "电脑是石头,电脑赢了!!";
} else if (res == 0 && "布".equals(data)) {

data = "电脑是石头,恭喜,你赢了!!";
} else if (res == 1 && "石头".equals(data)) {

data = "电脑是剪刀,恭喜,你赢了!!";
} else if (res == 1 && "剪刀".equals(data)) {

data = "电脑也是剪刀,打平了!!";
} else if (res == 1 && "布".equals(data)) {

data = "电脑是剪刀,电脑赢了!!";
} else if (res == 2 && "石头".equals(data)) {

data = "电脑是布,电脑赢了!!";
} else if (res == 2 && "剪刀".equals(data)) {

data = "电脑是布,恭喜,你赢了!!";
} else if (res == 2 && "布".equals(data)) {

data = "电脑也是布,打平了!!";
}
else {

data = "电脑不认识你出的拳";
}
outputs.println(data);//将比较的结果通过输出流发给客户端。
}
}
} catch (IOException e) {


}
try {

client.close();//关闭服务
} catch (IOException e) {

}
}
}

第三个,客户端类。

package src;//同上一个类

import java.io.*;//同上一个类
import java.net.*;//同上一个类

public class Client {//客户端类

public static void main(String[] args) {//客户端程序入口,MAIN方法

String data;//定义字符串
Socket client = null;//定义SOCKET
BufferedReader inputs = null;//输入流
BufferedReader key = null;//输入流
PrintStream outputs = null;//输出流

try {

client = new Socket("localhost",6000);//客户程序启动通过6000端口和服务器联系,和服务器保持端口一致。
inputs = new BufferedReader(new InputStreamReader(client.getInputStream()));//获取输入流
outputs = new PrintStream(client.getOutputStream());//获取输出流
key = new BufferedReader(new InputStreamReader(System.in));//用于接收用户要发送给客户端的字符串。
}
catch(IOException e) {

System.out.println("CAN NOT CONN WITH SERVER");
}

try {

while(true) {
System.out.println("----------------------------");
System.out.print("请出拳:石头/剪刀/布 ");
data = key.readLine();//读取用户输入的字符串。
outputs.println(data);//将读取的字符串发送给服务器。
System.out.println("ECHO: " + inputs.readLine());//返回服务器的结果并打印到控制台。
}
}
catch(IOException e) {

System.out.println("ERROR IO");
}

try {

client.close();
}
catch(IOException e) {

System.out.println("can not close it");
}
}
}
答案补充
我编写的是一个石头剪子布的小游戏,

运行的方法是先启动主线程类。然后启动客户端类。并再客户端一方输入 锤子,或 剪刀 或 布 ,然后回车,服务器会根据判断返回游戏的结果。这个过程反复执行。可以多次出拳和服务器较量。

呵呵,这次应该够详细了,不明白的可以继续补充。o(∩_∩)o...
有很多 
能够满足你的需要
三七五九九一六七六
给你课程设计源码。

上一个:JAVA是什么?IE又是什么?
下一个:有谁有二级java的试题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,