java俄罗斯方块游戏代码建议收藏

java俄罗斯方块游戏代码:1packagecom;23importjava.awt.Color;4importjava.awt.Graphics;5importjava.a

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

java俄罗斯方块游戏代码:

  1 package com;
  2 
  3 import java.awt.Color;
  4 import java.awt.Graphics;
  5 import java.awt.event.KeyEvent;
  6 import java.awt.event.KeyListener;
  7 import java.util.Random;
  8 
  9 import javax.swing.JFrame;
 10 import javax.swing.JPanel;
 11 
 12 public class Eluos extends JFrame{
 13     
 14     
 15     private Eluo_panel jPanel;
 16     
 17     private int this_width=500,this_height=500;
 18   public Eluos(){
 19     
 20       this.setSize(this_width, this_height);
 21       
 22       jPanel=new Eluo_panel();
 23       this.add(jPanel);
 24       
 25       
 26       this.setDefaultCloseOperation(EXIT_ON_CLOSE);
 27       this.setVisible(true);
 28       
 29       this.addKeyListener(new KeyListener() {
 30             
 31             @Override
 32             public void keyTyped(KeyEvent e) {
 33             }
 34             
 35             @Override
 36             public void keyReleased(KeyEvent e) {
 37                 System.out.println("type");
 38                 switch (e.getKeyCode()) {
 39                 case KeyEvent.VK_LEFT:
 40                     
 41                     Eluos.this.jPanel.moveOther(Eluo_panel.MOVE_RIGHT, Eluos.this.jPanel.curt_xingzhuang);
 42                     break;
 43                 case  KeyEvent.VK_RIGHT:
 44                     
 45                     Eluos.this.jPanel.moveOther(Eluo_panel.MOVE_LEFT, Eluos.this.jPanel.curt_xingzhuang);
 46                     break;
 47 
 48                 
 49                 
 50                 case KeyEvent.VK_UP:
 51                     System.out.println(Eluos.this.jPanel.curt_xingzhuang);
 52                 Eluos.this.jPanel.curt_xingzhuang=
 53                 Eluos.this.jPanel.bianXing(Eluos.this.jPanel.fangkuai.d, Eluos.this.jPanel.curt_xingzhuang);
 54                 
 55                     break;
 56                 }
 57                 
 58             }
 59             
 60             @Override
 61             public void keyPressed(KeyEvent e) {
 62                 
 63                 
 64                 
 65             }
 66         });
 67       
 68   }
 69   
 70   public static void main(String[] args) {
 71     
 72       new Eluos();
 73     
 74 }
 75     
 76 }
 77 
 78 class Eluo_panel extends JPanel implements Runnable{
 79 
 80      Fangkuai fangkuai;
 81     
 82      
 83     
 84      int huatu[][]=new int[20][20];
 85     long now_time=0;
 86     Random random=new Random();
 87     Color color=new Color(0);
 88   static final int MOVE_LEFT=1;
 89   static final int MOVE_RIGHT=2;
 90   
 91   boolean game_over=false;
 92    int curt_xingzhuang[][];
 93     public Eluo_panel(){
 94         
 95         fangkuai=createNewFangkui();
 96         
 97         Thread thread=new Thread(this);
 98         thread.start();
 99         
100         
101     }
102     @Override
103     public void paint(Graphics g) {
104         super.paint(g);
105         
106         drawBack(g);
107         drawFangkui(g,curt_xingzhuang);
108         moveDown(curt_xingzhuang);
109     }
110     
111     /**
112      * 画背景
113      * @param g
114      */
115     void drawBack(Graphics g){
116         
117         
118         for (int i = 0; i < huatu.length; i++) {
119             for (int j = 0; j < huatu[i].length; j++) {
120                 if(huatu[i][j]!=0)
121                     g.fillRect(j*20, i*20, Fangkuai.width-1,Fangkuai.height-1);
122             }
123         }
124     }
125     
126     /**
127      * 画一个方块
128      * @param g
129      * @param curt_xing
130      */
131      void drawFangkui(Graphics g,int curt_xing[][]){
132     
133             
134          if(fangkuai==null)
135          {
136              fangkuai=createNewFangkui();
137             
138          }
139          
140         if(curt_xing!=null){
141             int y=0;boolean b=false;
142             for (int i = 0; i < curt_xing.length; i++) {
143                 for (int j = 0; j < curt_xing[i].length; j++) {
144                     if(curt_xing[i][j]!=0)
145                     {
146                         
147                          g.setColor(fangkuai.getColor());
148                         g.fillRect((fangkuai.run_x+j)*Fangkuai.width, (fangkuai.run_y+y)*Fangkuai.height,
149                                 Fangkuai.width-1, Fangkuai.height-1);
150                         b=true;
151                         
152                     }
153                     
154                 }
155                 if(b)
156                     y++;
157                     
158             
159             }
160         
161         }
162      }
163     /**
164      * 创建一个方块
165      * @return
166      */
167     private Fangkuai createNewFangkui(){
168         
169         int index=0;
170         Random random=new Random();
171         Fangkuai fangkuai=new Fangkuai();
172         Color color=new Color(random.nextInt(255),
173                 random.nextInt(255),random.nextInt(255));
174         
175         index=random.nextInt(4);
176         fangkuai.setColor(color);
177         curt_xingzhuang=Fangkuai.xingzhuangs[index];
178         
179         return fangkuai;
180     }
181     
182     /**
183      * 判断是否能够向下移动
184      * @param xingzhuang
185      * @return
186      */
187     boolean isCan_down(int xingzhuang[][]){
188         
189         
190         int y=0;boolean b=false;
191         for (int i = 0; i < xingzhuang.length; i++) {
192             for (int j = 0; j < xingzhuang[i].length; j++) {
193                 if(xingzhuang[i][j]!=0)
194                 {
195                     b=true;
196                     if(fangkuai.run_y+y>=19||huatu[fangkuai.run_y+y+1][fangkuai.run_x+j]!=0){
197                         return false;
198                     }
199                     
200                 }
201                     
202             }
203             if(b)
204                 y++;
205         
206         }
207         
208         return true;
209     }
210     /**
211      * 变形
212      */
213     
214     public int[][] bianXing(int d,int arr[][]){
215         
216         if(arr==null||arr[0]==null)
217             return null;
218         
219         int arr2[][]=new int[arr.length][arr[0].length];
220         
221          
222         switch (d) {
223         case 1:
224             
225             
226             for (int i = 0; i < arr.length; i++) {
227                 for (int j = 0; j < arr[i].length; j++) {
228                     arr2[j][arr[i].length-1-i]=arr[i][j];         
229                 }
230             }
231             
232             
233             break;
234 
235         default:
236             break;
237         }
238         
239         for (int i = 0; i < arr2.length; i++) {
240             
241             for (int j = 0; j < arr2[i].length; j++) {
242                 
243                 if(arr2[i][j]!=0)
244                 {
245                 if(fangkuai.run_x+j>19||fangkuai.run_y+i>19||fangkuai.run_x+i<0
246                     ||huatu[fangkuai.run_y+i][fangkuai.run_x+j]!=0)
247                     return arr;
248                 }
249             }
250         }
251         
252         return arr2;
253         
254     }
255     /**
256      * 向下移动
257      * @param xingzhuang
258      */
259     private void moveDown(int xingzhuang[][]){
260 
261         if(isCan_down(xingzhuang))
262             fangkuai.run_y++;
263         
264         else
265         {
266             
267             /**
268              * 如果不能向下移动就把当前方块的0和1 映射到整个面板上,重新创建一个方块
269              */
270             int y=0;boolean b=false;
271             for (int i = 0; i < xingzhuang.length; i++) {
272                 for (int j = 0; j < xingzhuang[i].length; j++) {
273                     if(xingzhuang[i][j]!=0)
274                     {
275                         huatu[fangkuai.run_y+y][fangkuai.run_x+j]=1;
276                         b=true;
277                     }
278                         
279                 }
280                 if(b)
281                     y++;
282             
283             }
284             
285             
286             xiaoChu();
287             for (int i = 0; i < huatu[0].length; i++) {
288                 if(huatu[0][i]!=0)
289                     game_over=true;
290             }
291             
292             fangkuai=createNewFangkui();
293         }
294             
295     }
296     public void xiaoChu(){
297         
298         boolean xiao=false;
299         
300         for (int i = huatu.length-1; i >=0; i--) {
301             
302             xiao=false;
303             int j=0;
304             for ( j = 0; j < huatu[i].length; j++) {
305                 if(huatu[i][j]==0)
306                     break;
307             }
308             
309             if(j==huatu[i].length)
310                 xiao=true;
311             
312             
313             if(xiao){
314                 
315                 for ( j = i; j >0; j--) {
316                     for (int j2 = 0; j2 < huatu[j].length; j2++) {
317                         huatu[j][j2]=huatu[j-1][j2];
318                     }
319                 }
320                 for ( j = 0; j <huatu[0].length; j++) {
321                     huatu[0][j]=0;
322                 }
323                 
324             }
325             
326         }
327     }
328 /**
329  *  http://www.cnblogs.com/roucheng/
330  * @param d
331  * @param xingzhuang 
332  */
333      void moveOther(int d,int xingzhuang[][]){
334         
335         int dx=d==MOVE_LEFT?1:-1;
336         if(is_CanMoveOther(d, xingzhuang)){
337             fangkuai.run_x+=dx;
338         }
339     }
340     private boolean is_CanMoveOther(int d,int xingzhuang[][]){
341         
342         int dx=d==MOVE_LEFT?1:-1;
343         int y=0;boolean has=false;
344         for (int i = 0; i < xingzhuang.length; i++) {
345             has=false;
346             for (int j = 0; j < xingzhuang[i].length; j++) {
347                 
348                 if(xingzhuang[i][j]!=0)
349                 {
350                     if(d==MOVE_LEFT&&fangkuai.run_x+j>=19||d==MOVE_RIGHT&&fangkuai.run_x+j<=0)
351                         
352                             return false;
353                     has=true;
354                    if(huatu[fangkuai.run_y+y][fangkuai.run_x+j+dx]!=0){
355                        return false;
356                    }                    
357                 }
358             }
359             if(has)
360                 y++;
361         }
362     
363         return true;
364     }
365     
366     
367     
368     
369     @Override
370     public void run() {
371         
372         
373       while(!game_over)
374       {
375           
376           
377           this.repaint();
378           try {
379             Thread.sleep(300);
380         } catch (InterruptedException e) {
381             e.printStackTrace();
382         }
383       }
384     }
385     
386 }
387 class Fangkuai {
388     
389     
390     
391     private Color color;
392     
393      int run_x=10,run_y;
394     
395      int d=1;
396     
397      static final int width=20,height=20;
398     
399     public static final int  xingzhuangs[][][]={
400         {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},
401             {0,0,0,0,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}},        
402             
403             {{0,0,1,0},{0,1,1,1},{0,0,0,0},{0,0,0,0}},//土形
404             {{0,0,0,0},{1,0,0,0},{1,1,0,0},{0,1,0,0}},
405             {{1,1,1,1},{1,0,0,0},{0,0,0,0},{0,0,0,0}},//T形
406             {{1,1},{1,1}}
407             
408     };
409 
410     public Color getColor() {
411         return color;
412     }
413 
414     public void setColor(Color color) {
415         this.color = color;
416     }
417 
418     public int getRun_x() {
419         return run_x;
420     }
421 
422     public void setRun_x(int run_x) {
423         this.run_x = run_x;
424     }
425 
426     public int getRun_y() {
427         return run_y;
428     }
429 
430     public void setRun_y(int run_y) {
431         this.run_y = run_y;
432     }
433 
434     
435     
436     
437 }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120738.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python flask教程_python框架有哪些

    python flask教程_python框架有哪些大家好,这算是我使用CSDN以来第一次正二八经的想自己写一篇博客。如果有写的不好的地方还请大家见谅!使用pipenv的方便之处就是可以单独的为每一个python 项目建立对应的虚拟环境,而且该过程简单方便。下面我会用简短的步骤来描述这个过程:1. 首先使用pip进行安装pipenv。 用管理员身份打开命令行(cmd),然后输入pipinstallpipenv 回车,结果如下图所…

    2022年8月28日
    1
  • web前端node.js常用命令

    web前端node.js常用命令1、npm install moduleNames:安装Node模块安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。node的安装分为全局模式

    2022年7月1日
    17
  • ADB-安装配置[通俗易懂]

    ADB-安装配置[通俗易懂]一、只要下载ADB安装包即可就这4个文件:备注:如果下载放入到D盘去解压,打开dos窗口那么就要进入到D盘,然后再去执行adb命令,输入adb查看它是否安装成功二、ADB命令简单使用查看连接设

    2022年8月4日
    3
  • 批处理添加host_批处理修改文件内容

    批处理添加host_批处理修改文件内容一直都是手工修改host文件,这里提供个批处理修改host文件的方法,需要的朋友可以参考下。 @echo127.0.0.1baidu.com>>C:WindowsSystem32Driversetchosts这样就是换一行写入。如果还想换一行,就写:代码如下: @echo.>>C:WindowsSystem32Driversetchosts@echo1

    2022年10月12日
    0
  • Mac 计算机的日常使用 和 从零开始搭建Python开发环境

    Mac 计算机的日常使用 和 从零开始搭建Python开发环境Mac计算机的日常使用和从零开始搭建Python开发环境本文作者:魏泯效率魔法师,最后更新时间:2019年1月10日在进行学习mac常用操作的时候,保证你的mac已经连接网络。目录&#

    2022年7月6日
    20
  • 将文件导入到数据库中_将csv文件导入mysql数据库

    将文件导入到数据库中_将csv文件导入mysql数据库如何将 .sql数据文件导入到SQLsever中?我一开始是准备还原数据库的,结果出现了如下问题。因为它并不是备份文件,所以我们无法进行还原。正确方式:先打开SQLsever2008然后登录,假如出现如下问题则是“对象资源管理器”未开启解决办法,我们打开SQL配置管理器 然后这里是暂停或者是已停止,我们将其打开就行。

    2022年9月27日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号