Java电工基础知识接线图学完能制作小游戏吗?

JAVA制作网页游戏可以么? - ITeye问答
很喜欢游戏,想自己写游戏,学习的是JAVA语言,看到有JAVA写得游戏,网上查到的资料少之又少,不知道有谁有经验的谈谈看法
问题补充:或者想写游戏,该从哪方面入手,具体的书籍等情况最好介绍下
Java 写游戏还是写手机游戏比较有前途吧。像现在的安卓就是用java写的啊。光学java是不行的,要学游戏框架,现在手机的2d游戏,都是用cocos2d写的多。3d用的是unity3d写的比较多。而且java写服务端比较好,因为夸平台嘛,所以也要学习java 的socket编程喽
既然是网页游戏重点在于客户端,这里应该是富客户端才对。
曾看过韩国某商业游戏的源码(c/s)其的服务器端就是用java做的。我也想做游戏,但是做游戏太复杂了一个人没那个本事做。你可以找本书看看的了解下基础的,做一个完整的demo。
已解决问题
未解决问题&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
Java从基础到进阶学习之路----数独小游戏制作(一)
摘要:前言数独这个游戏大多数人都玩过,所以具体的游戏本身就不描述了。&规则和目标数独的规则很简单,就是在每一行,每一列,每个小宫格区(3X3)内不可以出现重复的数字。先贴一下大概的游戏界面样子:需求功能分析站在学习者的角度来说练下手,学习一下MVC框架模式这个项目涉及的Java的主要内容有:1.Java基础语法,特别是Java集合的部分。2.Java内置的Observer模式。3.Java的AWT和Swing组件4.Java组件布局和事件模型编程站在游戏者的角度来说目前仅
数独这个游戏大多数人都玩过,所以具体的游戏本身就不描述了。
规则和目标
数独的规则很简单,就是在每一行,每一列,每个小宫格区(3X3)内不可以出现重复的数字。
先贴一下大概的游戏界面样子:
需求功能分析
站在学习者的角度来说
练下手,学习一下MVC框架模式
这个项目涉及的Java的主要内容有:
1.Java基础语法,特别是Java集合的部分。
2.Java内置的Observer模式。
3.Java的AWT和Swing组件
4.Java组件布局和事件模型编程
站在游戏者的角度来说
目前仅仅是实现最基础的功能
1)可以产生新的游戏地图,点击new按钮。
2)判错:即是当前游戏进度内,是否不符合规则的数字填入
3)游戏辅助
即是开启help功能,点击相应的数字,就会在地图上提示该数字可以填入的地方。
4)游戏结束,提示是否继续游戏
概要设计分析
既然说了要学习一下 wiki MVC,所以,采用MVC框架来进行这个项目。
所以,就要把数独这个游戏分割成model,view,controller三部分。
首先简要说下MVC各部分的功能:(内容来自WIKI,具体参见上wiki链接)
模型(Model) 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。(比较:观察者模式(软件设计模式))
视图(View)能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
控制器(Controller)起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。
框架图如下
1)游戏地图存储数据结构
2)游戏的新地图生成算法
3)check,help等功能算法
Controller部分
1)选项按钮和数字选择的响应动作
2)填数字的动作相应
1)选项按钮、Help单选框、数字组按钮
2)数字填入显示
其中使用Observer模式辅助实现数独的更新检查等操作。
ok,这一节内容就这些了。
详细设计,包含类图,方法,算法等实现。
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
新用户大礼包!
现在注册,免费体验40+云产品,及域名优惠!
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
Java从基础到进阶学习之路----数独小游戏制作(一)相关信息,包括
的信息,所有Java从基础到进阶学习之路----数独小游戏制作(一)相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
InternationalJava完美实现2048小游戏
转载 &更新时间:日 09:20:08 & 投稿:hebedich
本文给大家分享的是一则根据网友的代码改编的2048小游戏的源码,个人认为已经非常完美了,推荐给大家,有需要的小伙伴可以参考下。
完美地模仿了2048游戏,是根据网友的一个2048改的。
Block.java
import javax.swing.*;
import java.awt.*;
public class Block extends JLabel
public Block()
value = 0;//初始化值为0
setFont(new Font("font", Font.PLAIN, 40));//设定字体
setBackground(Color.gray);//设定初始颜色为灰色
public int getValue()//获取值
public void setValue(int value)
this.value =
String text = String.valueOf(value);
if (value != 0)
setText(text);
setText("");//如果值为0则不显示
setColor();
public void setColor() //根据值的不同设定不同的背景颜色、label字体
switch (value)
setBackground(Color.gray);
setBackground(new Color(238, 228, 218));
setBackground(new Color(238, 224, 198));
setBackground(new Color(243, 177, 116));
setBackground(new Color(243, 177, 116));
setBackground(new Color(248, 149, 90));
setBackground(new Color(249, 94, 50));
setBackground(new Color(239, 207, 108));
setBackground(new Color(239, 207, 99));
setBackground(new Color(239, 203, 82));
case 1024:
setBackground(new Color(239, 199, 57));
case 2048:
setBackground(new Color(239, 195, 41));
case 4096:
setBackground(new Color(255, 60, 57));
My2048.java
import java.awt.*;
import javax.swing.*;
public class My2048 extends JFrame
public My2048()//构造函数
setTitle("2048");//设置标题
setSize(400, 400);//设定窗口大小
setLocation(500, 200);//设定窗口起始位置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new GridLayout(4, 4, 5, 5));//设定布局方式为GridLayout型
new Operation(this);
this.setVisible(true);//设为可视
public static void main(String args[]) //程序入口点
UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceRavenGraphiteLookAndFeel");//设定UI
} //接受抛出的异常
catch (ClassNotFoundException | InstantiationException| IllegalAccessException | UnsupportedLookAndFeelException e)
e.printStackTrace();
JFrame.setDefaultLookAndFeelDecorated(true);//设定Frame的缺省外观
new My2048();
Operation.java
import java.awt.event.*;
import javax.swing.*;
public class Operation implements KeyListener
Block[]//用于储存16个数据
public boolean up,down,left,
int moveF//用于累计移动的次数
boolean numF//用于判断是否还能加入新的数字
public Operation(JFrame frame)
this.panel = (JPanel)frame.getContentPane();//构造出panel
block = new Block[16];//构造出长度为16的数组
numFlag =//初始化
moveFlag = 0;
up=down=left=right=
addBlock();
for (int i = 0; i & 2; i++)
appearBlock();
frame.addKeyListener(this);
private void addBlock()
for (int i = 0; i & 16; i++) //往panel里加入block
block[i] = new Block();
block[i].setHorizontalAlignment(JLabel.CENTER);// 不透明的标签
block[i].setOpaque(true);
panel.add(block[i]);
public void appearBlock()
while (numFlag) //当还能加入随机的一个新的值得时候
int index = (int) (Math.random() * 16);//取一个0到15的随机整数,这个数作为随机加入盘中的2或4的位置
if (block[index].getValue() == 0)//如果这个数所在的block数组中值为0,即在为空的时候,加入一个2或4的数字
if (Math.random() & 0.5)
block[index].setValue(2);
block[index].setValue(4);
//跳出while
public void judgeAppear() //统计block数组中是否含有值为0的元素,若没有,则numFlag变为false
int sum = 0;
for (int i = 0; i & 16; i++)
if (block[i].getValue() != 0)
if (sum == 16)
public int Find(int i,int j,int a,int b)
while(i&b&&i&=a)
if(block[i].getValue()!=0)
return -1;
public void upBlock()
int i=0,j=0;int t=0;int valueJ=0;int valueI=0;int index=0;
for(i=0;i&4;i++)
for(j=i+4;j&16;j+=4)
valueJ=0; valueI=0;
if(block[index].getValue()==0)
t=Find(index,4,0,16);
block[index].setValue(block[t].getValue());
block[t].setValue(0);
valueI=block[index].getValue();
if(block[j].getValue()==0)
t=Find(j,4,0,16);
block[j].setValue(block[t].getValue());
block[t].setValue(0);
valueJ=block[j].getValue();
if(valueI==valueJ&&valueI!=0&&valueJ!=0)
block[index].setValue(valueI+valueJ);
block[j].setValue(0);
public void downBlock() {
int i=0,j=0;int t=0;int valueJ=0;int valueI=0;int index=0;
for(i=12;i&16;i++)
for(j=i-4;j&=0;j-=4)
valueJ=0; valueI=0;
if(block[index].getValue()==0)
t=Find(index,-4,0,16);
block[index].setValue(block[t].getValue());
block[t].setValue(0);
valueI=block[index].getValue();
if(block[j].getValue()==0)
t=Find(j,-4,0,16);
block[j].setValue(block[t].getValue());
block[t].setValue(0);
valueJ=block[j].getValue();
if(valueI==valueJ&&valueI!=0&&valueJ!=0)
block[index].setValue(valueI+valueJ);
block[j].setValue(0);
public void rightBlock()
int i=0,j=0;int t=0;int valueJ=0;int valueI=0;int index=0;
for(i=3;i&16;i+=4)
for(j=i-1;j&i-4;j--)
valueJ=0; valueI=0;
if(block[index].getValue()==0)
t=Find(index,-1,i-3,index+1);
block[index].setValue(block[t].getValue());
block[t].setValue(0);
valueI=block[index].getValue();
if(block[j].getValue()==0)
t=Find(j,-1,i-3,j+1);
block[j].setValue(block[t].getValue());
block[t].setValue(0);
valueJ=block[j].getValue();
if(valueI==valueJ&&valueI!=0&&valueJ!=0)
block[index].setValue(valueI+valueJ);
block[j].setValue(0);
public void leftBlock()
int i=0,j=0;int t=0;int valueJ=0;int valueI=0;int index=0;
for(i=0;i&16;i+=4)
for(j=i+1;j&i+4;j++)
valueJ=0; valueI=0;
if(block[index].getValue()==0)
t=Find(index,1,index,i+4);
block[index].setValue(block[t].getValue());
block[t].setValue(0);
valueI=block[index].getValue();
if(block[j].getValue()==0)
t=Find(j,1,j,i+4);
block[j].setValue(block[t].getValue());
block[t].setValue(0);
valueJ=block[j].getValue();
if(valueI==valueJ&&valueI!=0&&valueJ!=0)
block[index].setValue(valueI+valueJ);
block[j].setValue(0);
public void over()
if (numFlag ==false&& up==false&&down==false&&left==false&&right==false) //当不能添加元素,并且不可移动的步数超过36就输了,输了的时候在盘中央显示GAMEOVER
block[4].setText("G");
block[5].setText("A");
block[6].setText("M");
block[7].setText("E");
block[8].setText("O");
block[9].setText("V");
block[10].setText("E");
block[11].setText("R");
block[11].addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e){reStart();}});
public void win() //同OVER
block[0].setText("Y");
block[1].setText("O");
block[2].setText("U");
block[13].setText("W");
block[14].setText("I");
block[15].setText("N");
block[15].addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
reStart();
public void reStart()//重启游戏,和构造函数类似,不在累述
moveFlag=0;
up=down=left=right=
for(int i=0;i&16;i++)
block[i].setValue(0);
for (int i = 0; i & 2; i++)
appearBlock();
public void keyPressed(KeyEvent e) //判断按的上下左右键,并依次调用移动函数、判断函数、添加函数、判断是否输掉的函数
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
upBlock();}
judgeAppear();
appearBlock();
if(numFlag==false)
up=down=left=right=
case KeyEvent.VK_DOWN:
downBlock();}
judgeAppear();
appearBlock();
if(numFlag==false)
up=down=left=right=
case KeyEvent.VK_LEFT:
leftBlock();}
judgeAppear();
appearBlock();
if(numFlag==false)
up=down=left=right=
case KeyEvent.VK_RIGHT:
if(right){
rightBlock();}
judgeAppear();
appearBlock();
if(numFlag==false)
up=down=left=right=
public void keyTyped(KeyEvent e) {
public void keyReleased(KeyEvent e) {
以上所述就是本文给大家分享的关于java完美实现2048小游戏的全部代码了,希望对大家学习java能够有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具 上传我的文档
 上传文档
 下载
 收藏
粉丝量:29
该文档贡献者很忙,什么也没留下。
 下载此文档
新人Eclipse编写的Java小游戏
下载积分:1000
内容提示:新人Eclipse编写的Java小游戏
文档格式:DOC|
浏览次数:3778|
上传日期: 15:08:44|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
新人Eclipse编写的Java小游戏
关注微信公众号学JAVA一段时间了想做个小游戏试试手【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:724,786贴子:
学JAVA一段时间了想做个小游戏试试手收藏
请问用什么游戏来试手比较好啊,求大神推荐
51CTO学院12年行业品牌,1600万用户选择,中国专业IT技能学习平台,java.java资深大牛授课,0基础从入门到精通,java报名与培训中心.
俄罗斯方块,扫雷,贪吃蛇,纸牌,马里奥,黑白棋,五子棋,象棋,连连看,坦克大战。。把这些写完再来java吧
写俄罗斯方块把
三国杀网页版
正好用到 Java知识 灵活运用
**,这个可以有。。
群号:,大家一起来研究java吧
我也是新人 刚刚学习 正准备也写一个小游戏
做好发给我~我给你测验~
新手表示不知道该怎么学
— 围观是一种态度,十五字是一种责任。
我是来看二楼的
喂 楼主 从发帖到现在都两天了,你还没决定要写什么吗
登录百度帐号}

我要回帖

更多关于 电工基础知识试卷 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信