java小游戏做排行榜
创始人
2024-06-10 15:59:36
0

一、谁帮我做个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="电脑也是石头,打平了!!";

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

俄罗斯方块:

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();

}

}

}

}

一、谁帮我做个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="电脑也是石头,打平了!!";

} 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="电脑是剪刀,电脑赢了!!";

java小游戏做排行榜

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

俄罗斯方块:

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();

}

}

}

}

相关内容

热门资讯

十八禁游戏排行榜 一、十八禁游戏制作公司ILLUSIONILLUSION(イリュージョン)是日本株式会社Eye One...
steam手柄游戏排行榜 一、steam十大必玩手柄游戏列表:1、《真人快打11》《真人快打11》(Mortal Kombat...
h iphone游戏排行榜 各位老铁们好,相信很多人对h iphone游戏排行榜都不是特别的了解,因此呢,今天就来为大家分享下关...
日本好玩h游戏排行榜 一、日本安卓h性游戏下载.很无语有这么难谁告知!!!您好:成人色情游戏是国家明令禁止的游戏,正规的应...
steam游戏排行榜怎么查 一、steam游戏排行榜在哪里看steam游戏排行榜通过官方网站点击进入Steam官网查看。Stea...
hgame游戏排行榜 大家好,hgame游戏排行榜相信很多的网友都不是很明白,包括《怪异恐剧院》:令人惊艳的HGame,相...
美国app游戏排行榜 一、手游排行榜2023前十名手游排行榜2023前十名:《蛋仔派对》《桃源深处有人家》《泰拉瑞亚》《弹...
td游戏排行榜 一、2023好玩的td游戏好玩的td手游2023年,随着技术的不断发展,各种趣味性质的TD游戏也相继...
最新消消乐类的游戏排行榜 一、消消乐游戏排行榜消消乐游戏排行榜如下:《开心消消乐》、《宾果消消消》、《海滨消消乐》、《旋转消消...
变态版游戏盒子排行榜下载 一、十大变态游戏盒子排行榜今天小编要为大家带来的是十大变态游戏盒子排行榜,都是全网高人气的bt手游平...