1. 首页 > 游戏资讯

java小游戏做排名榜 java小游戏简单

作者:admin 更新时间:2025-05-02
摘要:一、谁帮我做个JAVA小游戏代码第一个类,服务器主线程类。package src;//定义一个包,存放JAVA文件。import java.io.*;//导入JAVA包,输入输出流包import java.net.*;//导入JAVA包,网络应用包public class SocketServer e,java小游戏做排名榜 java小游戏简单

 

一、谁帮我做个JAVA小游戏代码

第壹个类,服务器主线程类。

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="PC也是石头,打平了!!";

} else if(res== 0&&"剪刀".equals(data)){

data="PC是石头,PC赢了!!";

} else if(res== 0&&"布".equals(data)){

data="PC是石头,恭喜,你赢了!!";

} else if(res== 1&&"石头".equals(data)){

data="PC是剪刀,恭喜,你赢了!!";

} else if(res== 1&&"剪刀".equals(data)){

data="PC也是剪刀,打平了!!";

} else if(res== 1&&"布".equals(data)){

data="PC是剪刀,PC赢了!!";

} else if(res== 2&&"石头".equals(data)){

data="PC是布,PC赢了!!";

} else if(res== 2&&"剪刀".equals(data)){

data="PC是布,恭喜,你赢了!!";

} else if(res== 2&&"布".equals(data)){

data="PC也是布,打平了!!";

}

else{

data="PC不认识你出的拳";

}

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小游戏

俄罗斯方块:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Tetris extends JFrame{

public Tetris(){

TetrisPanel a= new TetrisPanel();

addKeyListener(a.listener);

add(a);

JMenuBar menu= new JMenuBar();

JMenu game= new JMenu("游戏");

game.add("新游戏");

game.add("暂停");

game.add("继续");

game.add("退出");

JMenu help= new JMenu("帮助");

help.add("关于");

menu.add(game);

menu.add(help);

this.setJMenuBar(menu);

setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(220, 275);

setTitle("Tetris内测版");

setResizable(false);

}

public static void main(String[] args){

new Tetris().setVisible(true);

}

}

//创建壹个俄罗斯方块类

class TetrisPanel extends JPanel{

public TimerListener listener= new TimerListener();

// blockType代表方块类型

// turnState代表方块情形

private int blockType;

private int score= 0;

private int turnState;

private int x;

private int y;

int flag= 0;

//定义已经放下的方块x=0-11,y=0-21;

int[][] map= new int[13][23];

//方块的形状第一组代表方块类型有S、Z、L、J、I、O、T 7种第二组代表旋转几次第三四组为方块矩阵

private final int shapes[][][]= new int[][][]{

// I

{{ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0},

{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0},

{ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0},

{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0}},

// S

{{ 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},

{ 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}},

// Z

{{ 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0},

{ 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}},

// J

{{ 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0},

{ 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0},

{ 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}},

// O

{{ 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},

// L

{{ 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0},

{ 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},

{ 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}},

// T

{{ 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},

{ 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},

{ 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0}}};

//初始化构造方式

public TetrisPanel(){

nextBlock();

newGame();

new Timer(1000, listener).start();

}

//生成新方块的方式

private void nextBlock(){

blockType=(int)(Math.random()* 1000)% 7;

turnState=(int)(Math.random()* 1000)% 4;

x= 4;

y= 0;

if(crash(x, y, blockType, turnState)== 0){

JOptionPane.showMessageDialog(null,"GAME OVER");

newGame();

}

}

//初始化地图

private void newGame(){

score= 0;

for(int i= 0; i< 12; i++){

for(int j= 0; j< 22; j++){

map[i][j]= 0;

map[11][j]= map[0][j]= 3;

}

map[i][21]= 3;

}

}

//旋转的方式

private void turn(){

turnState=(crash(x, y, blockType,(turnState+ 1)% 4)+ turnState)% 4;

repaint();

}

//左移的方式

private void left(){

x-= crash(x- 1, y, blockType, turnState);

repaint();

}

//右移的方式

private void right(){

x+= crash(x+ 1, y, blockType, turnState);

repaint();

}

//下落的方式

private void down(){

y+= crash(x, y+ 1, blockType, turnState);

if(crash(x, y+ 1, blockType, turnState)== 0){

add(x, y, blockType, turnState);

nextBlock();

}

repaint();

}

//是否碰撞的方式

private int crash(int x, int y, int blockType, int turnState){

for(int a= 0; a< 4; a++){

for(int b= 0; b< 4; b++){

if((shapes[blockType][turnState][a* 4+ b]& map[x+ b+ 1][y

+ a])== 1){

return 0;

}

}

}

return 1;

}

//尝试消行的方式

private void tryDelLine(){

for(int b= 0; b< 21; b++){

int c= 1;

for(int a= 0; a< 12; a++){

c&= map[a][b];

}

if(c== 1){

score+= 10;

for(int d= b; d> 0; d--){

for(int e= 0; e< 11; e++){

map[e][d]= map[e][d- 1];

}

}

}

}

}

//把当前添加map

private void add(int x, int y, int blockType, int turnState){

for(int a= 0; a< 4; a++){

for(int b= 0; b< 4; b++){

map[x+ b+ 1][y+ a]|= shapes[blockType][turnState][a* 4+ b];

}

}

tryDelLine();

}

//画方块的的方式

public void paintComponent(Graphics g){

super.paintComponent(g);

//画当前方块

for(int j= 0; j< 16; j++){

if(shapes[blockType][turnState][j]== 1){

g.fillRect((j% 4+ x+ 1)* 10,(j/ 4+ y)* 10, 10, 10);

}

}

//画已经固定的方块

for(int j= 0; j< 22; j++){

for(int i= 0; i< 12; i++){

if(map[i][j]== 1){

g.fillRect(i* 10, j* 10, 10, 10);

} else if(map[i][j]== 3){

g.drawRect(i* 10, j* 10, 10, 10);

}

}

}

g.drawString("score="+ score, 125, 10);

g.drawString("抵制不良游戏,", 125, 50);

g.drawString("回绝盗版游戏。", 125, 70);

g.drawString("注意自我保护,", 125, 90);

g.drawString("谨防受骗上当。", 125, 110);

g.drawString("适度游戏益脑,", 125, 130);

g.drawString("沉迷游戏伤身。", 125, 150);

g.drawString("合理安排时刻,", 125, 170);

g.drawString("享受健壮生活。", 125, 190);

}

//定时器监听和键盘监听

class TimerListener extends KeyAdapter implements ActionListener{

public void actionPerformed(ActionEvent e){

down();

}

public void keyPressed(KeyEvent e){

switch(e.getKeyCode()){

case KeyEvent.VK_DOWN:

down();

break;

case KeyEvent.VK_UP:

turn();

break;

case KeyEvent.VK_RIGHT:

right();

break;

case KeyEvent.VK_LEFT:

left();

}

}

}

}