| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2146 人关注过本帖
标题:xxx 人物和地图的移动
只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
你多强大跟我没关系, 我不关心。/
第一次在 java版块发帖,发的是俄罗斯方块, 是的,我认为俄罗斯方块是最难的游戏了。
不知道能不能见识一下你的代码,


[ 本帖最后由 BlueGuy 于 2010-11-13 19:41 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-11-13 19:38
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
画布背景背景透明化
做俄罗方块玩,一个画布当墙,一个画布当砖头,
setBackground(new Color(0x88ffffff,true))不管用,不知道咋整

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
class add方块 extends Canvas{
    aa a;
    add方块(aa o){
        a=o;
        setSize(301,451);

    }
    public void paint(Graphics g){
        for(int i=0;i<a.a.length;i++){
            for(int i1=0;i1<a.a[i].length;i1++){
                if(a.a[i][i1]){
                    g.setColor(new Color(0xaaaaaa));
                    g.fillRect((i1+a.n[0])*10,(i+a.n[1])*10,10,10);
                    g.setColor(new Color(0x333333));
                    g.drawRect((i1+a.n[0])*10,(i+a.n[1])*10,10,10);
                }
            }
        }
        for(int i=0;i<46;i++){
            for(int i1=0;i1<30;i1++){
                if(a.墙的数据[i][i1]){
                    g.setColor(new Color(0xcccccc));
                    g.fillRect(i1*10,i*10,10,10);
                    g.setColor(new Color(0x666666));
                    g.drawRect(i1*10,i*10,10,10);
                }
            }
        }
    }
}


public class aa extends Applet implements KeyListener,Runnable{
    private Panel p1;
    private add方块 f;
    Thread settime;
    private int 速度=300;
    public int n[]={13,0};
    public boolean 墙的数据[][]=new boolean[46][30];
    private boolean a1[][]={{false,true,true,false},{false,true,false,false},{false,true,false,false},{false,false,false,false}};
    private boolean a2[][]={{false,true,false,false},{false,true,false,false},{false,true,false,false},{false,true,false,false}};
    private boolean a3[][]={{false,false,false,false},{false,true,true,false},{false,true,true,false},{false,false,false,false}};
    private boolean a4[][]={{false,true,false,false},{false,true,true,false},{false,true,false,false},{false,false,false,false}};

    public boolean a[][]=a4;

    public void run(){
        while(true){
            try{
                settime.sleep(速度);
            }catch(InterruptedException e){}
            if(测试碰撞()){
                for(int i=0;i<4;i++){
                    for(int p=0;p<4;p++){
                        if(a[i][p]){墙的数据[i+n[1]][p+n[0]]=true;}        
                    }
                }
                n[0]=13;
                n[1]=-1;
                int x=(int) (Math.random()*4);
                if(x==0){a=a1;}else if(x==1){a=a2;}else if(x==2){a=a3;}else{a=a4;}
            }
            n[1]++;
            f.repaint();   
        }
    }

    private boolean 测试碰撞(){
        for(int i=0;i<4;i++){
            for(int p=0;p<4;p++){
                if(a[i][p]==true && 墙的数据[i+n[1]+1][p+n[0]]==true){return true;}        
            }
        }
        return false;

    }
    public void init(){

        for(int i=0;i<46;i++){
            for(int o=0;o<30;o++){
                墙的数据[i][o]=false;
            }
        }
        for(int o=0;o<30;o++){
            墙的数据[44][o]=true;
        }
        setBackground(new Color(0x88000000,true));
        setLayout(null);        

        p1=new Panel(null);
        
        p1.setBackground(new Color(0xffffff));
        p1.setBounds(20,20,301,451);
        add(p1);
        f=new add方块(this);
        p1.add(f);
        f.setLocation(0,0);
        Button b=new Button("开始");
        add(b);
        b.setBounds(350,20,100,25);
        b.addKeyListener(this);
        settime=new Thread(this);
        settime.start();
    }


    private  boolean[][] 转动(){
        boolean ar[][]=new boolean[4][4];
        for(int o=0;o<4;o++){
            for(int i=3;i>=0;i--){
                ar[o][3-i]=a[i][o];        
            }
        }
        return ar;

    }


    private void 左边界(){
        if(n[0]<0){
            int i=-n[0]-1;
            for(int p=0;p<4;p++){
                if(a[p][i]){
                    n[0]++;
                    return;
                }
            }
            
        }
    }

    private void 右边界(){
        if(n[0]>26){
            int i=4-(n[0]-26);
            for(int p=0;p<4;p++){
                if(a[p][i]){
                    n[0]--;
                    return;
                }
            }
        
        }        
    }


    private boolean 左碰撞(){
        for(int i=0;i<4;i++){
            for(int p=0;p<4;p++){
                if(p+n[0]-1>=0){
                    if(a[i][p]==true && 墙的数据[i+n[1]][p+n[0]-1]==true){return false;}
                }        
            }
        }
        return true;
    }


    private boolean 右碰撞(){
        for(int i=0;i<4;i++){
            for(int p=0;p<4;p++){
                if(p+n[0]-1<=30){
                    if(a[i][p]==true && 墙的数据[i+n[1]][p+n[0]+1]==true){return false;}
                }        
            }
        }
        return true;
    }


    public void keyPressed(KeyEvent e){
        if(e.getKeyCode()==KeyEvent.VK_UP){
            for(int i=0;i<3;i++){a=转动();}
            for(int i=0;i<2;i++){
                左边界();
                右边界();
            }
        }else if(e.getKeyCode()==KeyEvent.VK_LEFT){
            if(左碰撞()){n[0]--;}
            左边界();
        }else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
            n[0]++;   
            右边界();
        }else if(e.getKeyCode()==KeyEvent.VK_DOWN){
            速度=30;
        }   
            f.repaint();   

    }


    public void keyReleased(KeyEvent e){
        if(e.getKeyCode()==KeyEvent.VK_DOWN){
            速度=300;
        }
    }
    public void keyTyped(KeyEvent e){}

}

我就是真命天子,顺我者生,逆我者死!
2010-11-13 19:46
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
我承认你确实比我强大很多,不过我对 java不感兴趣。/



我就是真命天子,顺我者生,逆我者死!
2010-11-13 19:52
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
本来想回去吃饭了,但我也忍不住回来说你一句:
你这代码是 典型的 "北大青鸟"的学生 才写的出来的代码,
简直就是一坨屎,还自我感觉良好,劝你少把这种垃圾代码往论坛里扔。
你想打击我来抬高你的身价? 回去把 c 语言学个半年再来。/

我就是真命天子,顺我者生,逆我者死!
2010-11-13 20:14
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:2 
其实,你的汉字比你的代码价值更高。为什么这么说呢?一般初学者并不知道应该抽象出一个相机,导致计算绘图坐标变换相当麻烦
而你提及到了,说明你在游戏编程和图形编程上都学到了很多好东西
但是,你的代码却不能表达出来,而且你没有对代码适当的注解,比如那个CELL_WIDTH,如果不是接触游戏比较多,
那他也不会明白这是表明你把游戏地图基本单位以cell或者tile定义,而CELL_WIDTH是这个基本单位的宽呢?
显然,代码是给对这方面有一定熟悉程度的人看的,从你说话的语气也可以看的出来

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-11-13 20:30
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:2 
回复 12楼 BlueGuy
变量名居然还要用汉字,我知道Java允许这样,但是这不是什么好习惯

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-11-13 20:45
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:2 
BG水平是很高的  我见识过了

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-11-13 23:23
虾B写
Rank: 8Rank: 8
来 自:湖北
等 级:蝙蝠侠
威 望:3
帖 子:395
专家分:922
注 册:2009-10-1
收藏
得分:0 
以下是引用BlueGuy在2010-11-13 14:09:04的发言:

我都怀疑你能不能写好一个 "hello world",  把你的水平*10, 二年以后,你都写不出来这段代码,。/


我很少发言的,主要原因是看到有人欺负MM,我很生气,才在这里吹吹牛来打击你。

白娘故意下雨骗许仙的伞。祝英台十八里相送时装疯卖傻调戏梁山伯。七仙女挡住了董永的去路。牛郎趁织女洗澡时拿走了她的衣服。。。这些故事告诉我们;伟大爱情的开始,总归的有一个要先耍流氓!
2010-11-14 09:31
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
以下是引用虾B写在2010-11-14 09:31:05的发言:

 
 
我很少发言的,主要原因是看到有人欺负MM,我很生气,才在这里吹吹牛来打击你。
谢谢 其实是大家误会我了  我是很可爱的
2010-11-14 10:00
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:0 
呵呵。。

编程的道路上何其孤独!
2010-11-14 10:34
快速回复:xxx 人物和地图的移动
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055975 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved