2021-01-22学习记录 || 通过二维数组初始化窗体并进行代码重构

今天主要是通过二维数组将整个界面16个数字块展示出来,并为了下一步添加左移、右移功能创建子类MainFrame继承JFrame类并进行代码重构。

二维数组展示初始化界面

由于2048小游戏需要16个数字块,所以需要十六张图片都加进来,如果每次都创建一个JLabel对象会导致代码过于冗余,因此采用二维数组的方法。

//制造二维数组对象来保存16个位置的初始图片编号
int[][] arr = {
        {2, 2, 4, 0},
        {4, 8, 0, 8},
        {4, 64, 256, 512},
        {0, 0, 1024, 512}
};

然后采用遍历二维数组的方法添加图片

        //遍历二维数组将图片添加
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                ImageIcon II = new ImageIcon("D:\\2048_game\\image\\A-" + arr[i][j] + ".png");
                JLabel jl = new JLabel(II);
                jl.setBounds(50 + 100 * j, 25 + 100 * i, 100, 100);
                frame.getContentPane().add(jl);
            }
        }
        //添加背景图
        ImageIcon IBack = new ImageIcon("D:\\2048_game\\image\\A-Background.jpg");
        JLabel jlback = new JLabel(IBack);
        jlback.setBounds(50, 25, 400, 400);
        frame.getContentPane().add(jlback);

注意:由于如果JLabel如果出现区域重叠是从底下塞入,所以背景图的创建应该放在最后,如果放在开始则会覆盖十六个数字块。

利用继承的方法进行代码重构

由于我们需要在界面中加入左移、右移等操作,所以更优的做法是创建子类MainFrame继承Jframe以此实现功能的丰富。

//创建子类继承JFrame类,目的是方便添加左移、右移等方法
public class MainFrame extends JFrame {
    //制造二维数组对象来保存16个位置的图片编号
    int[][] arr = {
            {2, 2, 4, 0},
            {4, 8, 0, 8},
            {4, 64, 256, 512},
            {0, 0, 1024, 512}
    };
    
    //setframe()用于窗口的初始化
    private void setframe(){
      //此处是对窗口初始化的操作,具体可以查看2021-01-19的学习记录
    }
    
	//paintframe()用于将窗体初始状况进行绘制
    private void paintframe(){
	  //此处是对窗体的绘制,即上文遍历二维数组添加图片的方法
	}
    

    //构造函数用于初始化一个Mainframe对象
    public MainFrame() {
        setframe();
        paintframe();
        //显示窗口的方法,一般放在最后
        setVisible(true);
    }
}

运行结果

完成之后在运行类start类中创建MainFrame对象

public class start {
    public static void main(String[] args) {
        new MainFrame();
    }
}

运行结果如下

今天主要学习内容就是在这些了,昨晚太困了没有看完《美丽人生》就去睡觉了,现在继续看去!写完了放到这篇文章后面吧。

《美丽人生》

现在是凌晨一点半,看完了《美丽人生》,说实话,感受很多,感动、气愤、更多的是难过。
影片整体上贯彻了三句话“残酷的现实,丑陋的历史,美丽的心灵”,一个欲扬先抑用的淋漓尽致。
一开始圭多和多拉的情感经历,让我差点以为这是个美好的爱情故事,喜剧元素、谐音梗、谜语还有你永远不知道现在发生的剧情在接下来会怎么被圭多用来追求多拉。看到圭多成功抱得美人归,我直感叹如果我有他一半的幽默和机灵也不至于至今还是单身,可后面发生的,远超出我的接受能力了。
可是后来,纳粹的登场,让这个美丽的故事走向的阴暗。
虽然前面似乎有多次暗示,但由于对意大利的历史不太了解,直到在祖叔华生日那天父子俩由于犹太血统被带走的时候,我才意识到前面一些剧情可能是用来做铺垫的。在集中营里,圭多被用来做苦力,为纳粹党劳作,为了让这段丑陋的历史不在儿子祖叔华的心理扎根,他骗儿子说来到集中营是一场大型游戏,率先赢得一千分的人可以胜出并赢得一辆坦克。一直一直,无论是发生多么残酷的事情,他都一直以这样的方式爱着儿子,保护着儿子的心灵。
直到最后一天晚上,纳粹党要撤离了,但在此之前要屠杀所有的犹太人,圭多让儿子藏在了柜子里并叮嘱他无论如何都不要出来,儿子因此躲过一劫,但他自己却在去寻找妻子告诉她尽快逃跑的消息后被德国军官发现,在军官的押送下经过柜子时,为了儿子,他故意朝他眨眨眼,开始花哨的迈着步子向前走去,可惜在被押进巷子里和一阵枪响后,出来的只剩德国士兵,而看不到圭多跳出来喊出“早安,我的公主”了……
看到圭多最后为了保护儿子的举动时,心里的难过酝酿了好几份,而在纳粹士兵离开后还特地给出巷口几秒特写镜头时,心里的悲伤登顶了。
仁者见仁,不同的观众一定可以从这部电影读出不一样的心情。我更多的关注点在圭多的爱情和父爱吧。为了妻子,他宁愿冒着生命危险也要去告诉她“尽快跳车”的消息,为了儿子的生命和心灵的健康,他即使再苦再累也会动用自己的喜剧天赋和机灵哄儿子开心。虽然他只是个开书店的小人物,但对妻子和儿子的不辜负让他的形象变得无比高大。
除此之外就是对历史的感受。那段丑陋的历史让无数个幸福的家庭惨遭拆散,更让无辜的人受到了可能会伴随一生的痛苦,中国的十九世纪发生过相同的事情,所以感触也会更深一点,可无论是哪个国家,侵略和战争为其带来的,都将是无尽的痛苦的灾难,薛之谦那句“世界和平”此刻成了我心中最大的愿望。
导演(兼主演)真的把以小见大的方法用到了极致,更多的是对一个小家庭的描写,对观众的感受却并不比历史大片带来的冲击要小,不知为何,我想到这里的时候也想到了陈凯歌的《霸王别姬》,也是以梨园行一个戏子的视角描述了对中国人来说那段黑暗的时代,这大概就是真正的大师讲故事的方式吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值