《java游戏大作业设计》
《Java程序设计》课程标准

《Java程序设计》课程标准课程名称:Java程序设计课程代码:1669建议课时数:80(其中实践课时数:40)学分:5适用专业:软件技术课程归口单位:软件与服务外包学院一、前言(一)课程的定位本课程是计算机软件技术专业的一门专业核心课程,目标是使学生熟练运用面向对象的基本思想与方法和Java语言进行程序开发。
它要以《C语言程序设计》、《关系数据库基础与应用》等课程的学习为基础,也是进一步学习《Java Web应用开发》及《Java Web框架编程》打下良好的基础。
(二)设计思路本课程是依据“软件技术专业工作任务与职业能力分析表”中的B/S互联网应用开发和移动应用开发工作项目设置的。
其总体设计思路是,打破以知识传授为主要特征的传统学科课程模式,转变为以工作任务为中心组织课程内容,并让学生在完成具体项目的过程中学会完成相应工作任务,并构建相关理论知识,发展职业能力。
课程内容突出对学生职业能力的训练,理论知识的选取紧紧围绕工作任务完成的需要来进行,同时又充分考虑了高等职业教育对理论知识学习的需要,并融合了相关职业资格证书对知识、技能和态度的要求。
工作项目设计以Java程序员的岗位需求分析为主线来进行,梳理知识与技能的描述。
要求能使用Eclipse集成开发环境,熟练运用Java语言和Spring MVC技术进行程序开发;熟悉Java语法、面向对象的实现方法、JDBC访问、网络通信协议等知识。
本课程以任务驱动为主,采用线上线下混合教学模式,以五大学习任务为主。
学习任务以具体项目为载体,这些项目相互独立且递进的,融合了每个学习阶段任务中要求学生掌握的知识和技能,培养学生的实际编程能力。
在课程实施过程中注重培养学生的职业道德、合作意识、质量意识、服务意识以及学习意识等素养,使其符合企业需求的Java开发工程师应具备的职业素养。
该门课程的总学时为80课时,5学分。
2课程目标通过本课程的学习,学生理解类层次、对象及对象之间的关系,熟悉并能使用Eclipse 集成开发环境,理解Eclipse开发环境的编译、运行方式;掌握面向对象的编程思维;熟悉应用程序开发的一般步骤;了解Java代码编写和文档符合规范,形成良好的编程习惯,养成良好的协作精神与服务意识的团队合作能力;熟悉程序调试、排错的方法。
《JAVA程序设计》大作业报告模板

华北科技学院计算机系课程综合作业实验报告课程名称JAVA程序设计实验学期2010 至2011 学年第 1 学期学生所在系部计算机年级08级专业班级信管B082学生姓名学号************ 任课教师实验成绩计算机系制《JAVA程序设计》课程综合作业实验报告学生的学号,可以更新这条记录中的数据;“查询记录”,输入要查询学生学号可以查询这个学生的所有信息;选择分数信息中的“各科最高低分”菜单,可以查询所有学科中的最高分和最低分;“总分平均分”显示所有学生的总分和平均分。
3.主要代码本程序使用Java中基于SWING的图形设计,用到java中的java.awt.*内的包,控件的布局用到java.swing.border.*包,事件处理用到java.awt.event.*,连接数据库用到java.sql 登录界面主要代图1public class denglu{public static void main(String args[]){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){ //11System.out.println(""+e);}new WindowBox("登录窗口"); //调用方法}}class WindowBox extends JDialog implements ActionListener{//声明Box baseBox,boxV1,boxV2,boxV3;JButton button1,button2;}}}如果出现用户名密码错误则会出现提示信息对话框图2通过调用Datawin类中的内容可以进入到主界面声明菜单中的显示、添加、删除、修改、查询、最高低分以及总分平均分菜单项和类,能过给菜单添加事件监听事件图3public void actionPerformed(ActionEvent e){if(e.getSource()==itemshow)show.setVisible(true);else if(e.getSource()==itemadd)add.setVisible(true);else if(e.getSource()==itemupdata)updata.setVisible(true);a[k][0]=rs.getString(1);a[k][1]=rs.getString(2);a[k][2]=rs.getString(3);a[k][3]=rs.getString(4);a[k][4]=rs.getString(5);a[k][5]=rs.getString(6);k++;}con.close();}catch(SQLException ee){System.out.println(ee);} //处理异常table=new JTable(a,name);getContentPane().removeAll(); //采用BorderLayout布局add(showRecord,BorderLayout.NORTH);add(new JScrollPane(table),BorderLayout.CENTER);validate();}图4构造增加类,声明组件,定义一个表名Object name[]={"学号","姓名","年龄","性别","系别","班级"};和定义一个表单Object a[][]=new Object[1][6];然后给按钮组件增加以下监听事件,通过对表单中输入数据进而增加到数据库中public void actionPerformed(ActionEvent e)//处理事件图5图6构造删除类,声明组件,在文本框中输入信息,进而可以删除数据库中相应的记录给文本框和按钮增加以下事件public void actionPerformed(ActionEvent e){if(e.getSource()==inputNumber){try{num=inputNumber.getText().trim();con=DriverManager.getConnection("jdbc:odbc:hello","","");sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM 学生信息 WHERExueid='"+num+"'");boolean boo=rs.next();if(boo==false){JOptionPane.showMessageDialog(this,"学号不存在",table.repaint();//重打印表con.close();}catch(SQLException ee){JOptionPane.showMessageDialog(this,"更新失败"+ee,"失败",JOptionPane.ERROR_MESSAGE);}}//if图7构造查询方法查询这个窗体整体彩盒式布局,首先声明类和方法设计窗体的外观,给相应的组件添加事件利用SQL语句查询数据库中的信息 rs=sql.executeQuery("SELECT * FROM 学生信息WHERE xueid='"+num+"'");如果输入学号数据库中不存在提示信息“学号不存在”,否则利用table.repaint();方法将数据库中的信息输入到窗体中的table中public void actionPerformed(ActionEvent e)//处理事件{try//连接数据原 hello{num=inputNumber.getText().trim();con=DriverManager.getConnection("jdbc:odbc:hello","","");图8构造最高最低分类首先定义两个静态变量m,n;将数据库中的信息利用查询的方法显示在数字 int b[][]中,con=DriverManager.getConnection("jdbc:odbc:hello","","");sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//只读形式rs=sql.executeQuery("SELECT * FROM 分数信息");st();利用如下方法求得语文成绩的最高分和最低分for(k=0;k<lastNumber;k++){if(m<b[k][0]){m=b[k][0];}if(n>b[k][0]){n=b[k][0];}}a[0][1]=m;a[1][1]=n;同理可以求得其它几科成绩的最高分和最低分然后,将object a[][]中的信息显示有窗体中图9构造总分平均分方法首先将数据库中的信息显示在利用SQL查询方法显示有两个数据中object a[][]和int b[][]中利用如下方法将求得总分和平均分try{con=DriverManager.getConnection("jdbc:odbc:hello","",""); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=sql.executeQuery("SELECT * FROM 分数信息");st();int lastNumber=rs.getRow();b=new int[lastNumber][4];a=new Object[lastNumber][8];int k=0;rs.beforeFirst();while(rs.next()){a[k][0]=rs.getString(1);a[k][1]=rs.getString(2);a[k][2]=rs.getByte(3);b[k][0]=rs.getByte(3);a[k][3]=rs.getByte(4);b[k][1]=rs.getByte(4);a[k][4]=rs.getByte(5);b[k][2]=rs.getByte(5);a[k][5]=rs.getByte(6);b[k][3]=rs.getByte(6);a[k][6]=b[k][0]+b[k][1]+b[k][2]+b[k][3];a[k][7]=(b[k][0]+b[k][1]+b[k][2]+b[k][3])/4;k++;}con.close();}catch(SQLException ee){System.out.println(ee);}图10四、实验结果及分析程序运行中的报告分析1、在登陆时如果输入不正确的用户和密码会提示用户名或密码错误,因为通过getText()方法无法获得正确的字符串从而提示错误2、在进行数据库相应操作时,如果无法正确连接数据库则会提示不存在所需的数据资源,可能原因是没有正确连接到数据源,即可能数据源名称不正确,或者在数据库中不存在相应的表,或者可能SQL语法错误在进行相应的查询的删除操作时,如果不存在输入的学号会提示用户,“学号学号不存在”,因为不在数据库不无法在相应的字段下找到相匹配的字符串。
Java大作业报告

Java大作业报告课程名称:面向对象JAVA编程技术设计题目:猜数字游戏姓名:徐俏学号:3100403012专业班级:信息工程类101班一.设计内容:游戏者在"0~100","0~200","0~300"三个区间内选择随机数字范围,点击按钮“随机产生数字”产生数字n,假设在“0~100”之间,2、当输入一个整数m时,点击按钮“比较”n与m比较。
当m>n时,提示"太大了哦!还可以再小一点~~~";否则显示"小了哦,可以猜大一点的数!",依次类推,直到猜到数字n。
显示"答对啦!!!"。
并且出现"猜的次数大于三次请自觉摁下惩罚键吧!",是的话,按下按钮"进入惩罚选择"。
3、然后点击按钮选择惩罚方式:"惩罚装扮对象""惩罚地点""惩罚事件",都由程序随机产生,最终得到惩罚事件。
二.摘要:J ava.awt,即java抽象窗口工具包(Abstract Window Toolkit,AWT)提供了许多用来设计GUI (Graphics User Interface,图形用户界面)组件类。
java早期进行用户界面设计时,主要是用java.awt包提供的类。
如Button(按钮)、TextField(文本框)和List(列表)等。
JDK1.2推出之后,增加了一个新的javax.swing包,该包提供了功能更为强大的用来设计GUI的类。
Java.awt.event,提供处理由 AWT 组件所激发的各类事件的接口和类。
有关 AWT 事件模型的细节,请参见 java.awt.AWTEvent 类。
事件由事件源所激发。
向事件源注册的事件侦听器可接收有关特定事件类型的通知。
此包定义了事件和事件侦听器,以及事件侦听器适配器,它是让事件侦听器的编写过程更为轻松的便捷类。
《JAVA程序设计》课程设计大作业-Java学生管理系统

《JAVA程序设计》课程设计大作业-Java学生管理系统山东理工大学计算机学院题目: Java学生管理系统班级姓名学号2011 年 12 月 6 日目录摘要.................................................................................3 第一章设计简介及设计方案 (4)1.1 系统功能分析 (4)1.2 系统功能模块设计 (4)1.3 数据库功能分析 (4)1.4 数据库需求分析.........................................................5 第二章详细设计 (6)2.1 数据库设计 (6)2 详细编程…………………………………………………………8 2.第三章设计结果及分析 (12)3.1 设计结果 (12)3.2 设计结果分析.........................................................19 总结..............................................................................17 参考文献 (17)2摘要随着计算机技术的飞速发展,当今社会正快速向信息化社会前进。
而如今学校的规模不断扩大,学生数量急剧加,有关学生的各种信息量也成倍增长,面对庞大的信息量,就需要有学生信息管理系统来提高学生管理工作的效率。
通过这样的系统,可以做到信息的规范管理、科学统计和快速的查询,从而减少管理方面的工用量。
此次设计我们使用JAVA编程,实现了学生信息管理系统的过程。
本系统采用Sun公司的j2sdk1.4.2_04和SQL SERVER 2000数据库管理系统作为开发工具,通过对学生信息管理系统进行可行性分析、需求分析和设计逐步将一个学生信息管理系统的开发过程呈现出来。
Java大作业设计报告

《Java程序设计》大作业设计报告设计名称多人聊天室组员姓名学生班级设计时间 2013.12.15设计成绩一、问题描述及设计思路设计多人聊天程序,能进行多人实时聊天,其中服务器为PC端,客户端为安卓端。
在服务器上,不断监听来自客户端的接入请求,对于接入的客户端加入线程池,同时为之开启独立线程,等待从该客户端发来的信息,再转发给其他客户端。
在客户端上,首先布局简单的安卓界面,开启客户端并且登录后,设置button 按钮监听想服务器发送信息请求,同时开启独立线程接收来自服务器的信息(即来自其他客户端的信息)。
二、详细设计过程服务器开发1.首先,导入了我们完成服务器端所要完成的各种类:能,辅助以GUI界面进行美化。
2.在Server类里面的私有成员函数里,有以下定义:程运行做准备,同时创建了一个广义的ArrayList<Socket>vector,用来存放客户端的套接字。
创建了两个file类的文件,分别用于记录客户端的链接信息和保存客户端的聊天记录。
一个独立的线程,互不干扰。
接下来则是采用GUI组件进行简单的界面设计,在try-catch块里完成主要功能。
首先,采用ServerSocket serverSocket = new ServerSocket(port);建立套接字,一旦建立成功,则在服务器端的界面上会出现创建的日期信息。
又使用Socket socket = serverSocket.accept();连接客户端,采用while语句不断监听客户端连接,收到请求后,则在服务器端显示客户端的信息,如连接到服务器的时间,客户端的主机名称和IP地址,这些信息会被写进txt文本进行保存。
mExecutorService.execute(new Thread(newHandleAClient(socket)));则是向线程池中添加线程,这里使用了一个内部类HandleAClient用于处理服务器和单独一个客户端之间的问题。
《Java语言程序设计》大作业报告九宫格游戏

if(replay==JOptionPane.YES_OPTION){
Game G=new Game();
1. 运行结果及分析
因为是字节流储存,所以显示是字符
1. 设计经验总结 刚刚开始感觉很难,因为对图形界面太不了解了,有的函数和类都不知道,所以超级难入手,但是当看网上的代码和同学的多了之后也就知道该怎么编了,一旦入手,后 面的就感觉没有那么难了,现在编完了就感觉图形界面也就那么回事,都是固定的模式,模块添加也很简单,虽然还是有很多不懂的地方但是相比于做大作业之前已经有 很多的提高了,还认识了很多不认识的组件,同学们都用了不同的方法,我用的是网格布局然后添加button,感觉这样界面友好一点。弹出的对话框可以JOptionPane而不 是再定义JDialog,文件的读写方法很多,选一种自己理解的就好。 总的来说学到了很多知识,更加巩固了本来就很薄弱的java。 附:源程序
Buttons[i-1][j].setEnabled(true);
Buttons[i][j].setText("");
Buttons[i][j].setEnabled(false);
number_path++;
}
if(j+1!=3&&Buttons[i][j+1].getText()==""){
Buttons[i][j+1].setText(Buttons[i][j].getText());
e1.printStackTrace();
}
if(number_path>best_recond){
JOptionPane.showConfirmDialog(this,"你太厉害了!!这么难都能赢!!!才用了"+Integer.toString(number_path)+"步!!然而并没有打破记录。历史最佳成绩是:"+Integer.toString(best_recond));
Java大作业报告

课程:Java程序设计与应用开发题目:登录系统与钟表实现班级:XXXXXXXXXX学号:XXXXXXXX姓名:XXXX日期:XXXXX一、大作业目的用面向对象语言JA V A完成登录系统和钟表的分析、设计和实施。
通过课程设计掌握面向对象编程技术、GUI编程、常用类库的使用和应用系统的开发过程。
二、大作业题目描述和要求1.题目设计简单的登录系统和钟表界面,掌握Java编程中的多媒体应用。
2.要求(1)登录系统是java编程中比较基础的,设计一个登录对话框,通过输入正确的用户名和密码来进入系统,系统是一个带有菜单栏的记事本程序,通过点击菜单栏上的按钮来实现相应的功能。
(2) 通过设计一个钟表程序进一步掌握java在多媒体方面的应用。
3. 开发环境Eclipce + JDK1.4.2三、系统分析1.对于登录系统,首先应该对登录界面进行设计,该对话框中包括两个标签,一个文本输入框,一个密码输入框和两个按钮,这些GUI组件被添加到一个使用了网络袋布局的面板panel中,面板panel又被添加到Text_Login的内容窗格。
设计该系统的初步思路就是首先需要定义图像生成器的界面窗口,其次就是往每个按钮上添加触发事件监听器(如ActionListener、MouseListener、MouseMotionListener),然而在实际操作的过程中,新的问题不断出现,不过最后依依解决了。
对于记事本程序中的菜单栏的实现,菜单也是一种常用的GUI组件,菜单是一种层次结构,最顶层是菜单栏,在菜单栏中可以添加若干个菜单,每个菜单又可以添加若刚菜单选项,子菜单。
当单击一个菜单选项时,会生成一个动作事件,为菜单选项添加事件侦听器就可以侦听起动作事件。
2.对于Java的多媒体应用之钟表实现,程序在窗口上显示一个表盘,时刻度和分刻度为3D样式的,分别为黑灰色和灰色时针分针秒针随着时间在走动,间隔1s。
时针和分针的样式设计为略显锥形,秒针为简单的直线形。
Java程序设计基础大作业

在这个练习里,创建一个简单版本的(账户类)Account类。
将这个源文件放入banking程序包中。
在创建单个帐户的默认程序包中,已编写了一个测试程序TestBanking。
这个测试程序初始化帐户余额,并可执行几种简单的事物处理。
最后,该测试程序显示该帐户的最终余额。
1.创建banking 包2.在banking 包下创建Account类。
该类必须实现上述UML框图中的模型。
1.声明一个私有对象属性:balance,这个属性保留了银行帐户的当前(或即时)余额。
2.声明一个带有一个参数(init_balance)的公有构造器,这个参数为balance属性赋值。
3.声明一个公有方法getBalance,该方法用于获取经常余额。
4.声明一个公有方法deposit,该方法向当前余额增加金额。
5.声明一个公有方法withdraw从当前余额中减去金额。
3.编译TestBanking.java文件。
4.运行TestBanking类。
可以看到下列输出结果:Creating an account with a 500.00 balanceWithdraw 150.00Deposit 22.50Withdraw 47.62The account has a balance of 324.88package banking;public class Account {private double balance;public Account(double balance){this.balance=balance;}public double getBalance() {System.out.println("当前余额为:"+balance+"元");return balance;}public double deposit(doubleadd){ //取钱方法balance+=add;System.out.println("存钱"+add+"元,当余额为"+balance+"元");return balance;}boolean withdraw(doubleget){ / /取钱方法if(get<=balance){System.out.println("取钱"+get+"元,当余额为"+balance+"元");return true;}else{System.out.println("'余额不足");return false;}}}package banking;public class Customer {private String firstName;private String lastName;private Account account;public Customer(String firstName,String lastName) //账户名字构造方法{this.firstName=firstName;stName=lastName;System.out.println("用户名为:"+firstName+"\t"+lastName);public String getFirstName(){return firstName;}public String getLastName(){return lastName;}public void setAccount(Account account) {this.account = account;}public Account getAccount() {return account;}@Overridepublic String toString() {return "Customer [account=" + account + "]"; }}package banking;public class Bank {private Customer customers[];private int numberOfCustomers[];//公有构造器public Bank() {customers = new Customer[5];numberOfCustomers = new int[5];}public static int index = 0;public static int c= 0;public void addCustome(String firstName,String lastName) {index=+c;customers[index] = new Customer(firstName, lastName);numberOfCustomers[index]=++c;}public int getNumOfCustomers(){return numberOfCustomers.length;}public Customer getCustomer(int index){return customers[index];}}package banking;public class SavingAccount extends Account { //存款账户private double interestRate;public double getInterestRate() {return interestRate;}public void setInterestRate(double interestRate) {this.interestRate = interestRate;}public SavingAccount(double balance,double interestRate){super(balance);this.interestRate=interestRate;}}package banking;public class CheckingAccount extendsAccount{ //透支账户private double overdraftProtection; //属性public double getOverdraftProtection() {return overdraftProtection;}public void setOverdraftProtection(double overdraftProtection) { this.overdraftProtection = overdraftProtection;}public CheckingAccount(double balance){ //构造方法super(balance);}public CheckingAccount (double balance,double overdraftProtection) {super(balance);this.overdraftProtection=overdraftProtection;}boolean withdraw(doubleget){ / /覆盖取钱方法if(balance-get>0){balance = balance - get;System.out.println("取钱"+get+"元,当余额为"+balance+"元");return true;}else{if(get<=getOverdraftProtection())System.out.println("'余额为:"+(balance-get));elseSystem.out.println("请在可透支范围内提款!");return true;}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Lives life1 = new Lives(1);
Lives life2 = new Lives(2);
Lives life3 = new Lives(3)
③四种颜色的怪物:
Inky inky = new Inky();
Blinky blinky = new Blinky();
图3-2
在触碰Ghost事件中(如图3-4所示),只有当Ghost处于特殊状态时,玩家角色才可以将其吞食消除,否则吃豆人将会失去一条生命并且重置回出生点,并在计分板上使其生命显示减1(同步计数器)。
图3-3
四、
4
在游戏场景中,除了中央的游戏区域外,左右各有三块区域用于显示游戏信息,而其余部分则用Blank类方法填充空白。
for(int i = 0; i <pacworld.length; i++)
{
for(int j = 0; j <pacworld[i].length; j++)
{
pacworld [i][j] = false;
}
}
接下来根据数组绘制地图DrawPath,将绘制的边界以特殊的信息保存到数组中。
private void DrawPath()(部分代码)
通过本次游戏设计,综合自己在校期间所学的理论知识,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对java基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。
二、
吃豆子游戏是一种古老而又有趣的游戏,游戏软件不计其数,网上就有好多关于实现的复杂算法和设计,其难度让一般初学者望而却步。开发的出来的吃豆子游戏是一种内容丰富,画面优美,益智类游的戏,并且不受网络的限制,让人们能够在任何时刻通过体验游戏,放松心情。
设计需求:
①游戏界面设计要能够彰显设计者的基本设计框架及思路;
②游戏界面布局要清晰整洁、层次明确;
③游戏的设计要使玩家能在短时间内掌握游戏规则;
④玩家可以自由操控角色,玩家角色具有吃豆子的功能;
⑤吃到不同的豆子能有不同的效果(分数变化、角色状态的变化等等);
⑥怪物要能够自主运动,采用其特定的算法独立实现;
所有的类在设计的时候保证了相互之间的联系性,类与类之间存在方法上的调用,对象方法的灵活运用是吃豆人游戏的一大主体。
3
作为一个游戏,事件的设计必不可少。在设计一个游戏时总是会在特定的游戏场景中抛出一个自定义事件,由相关的界面(可能是多个)去订阅这个事件,当接收到这个事件时,这些界面刷新显示数据,从而解除游戏逻辑层和界面显示层的耦合关系。每一个游戏都有其自定义的游戏触发事件,本次设计的吃豆人游戏也有着其独到的自定义事件。
⑦游戏中怪物与玩家角色之间要有相应的事件(比如:触碰到玩家角色时玩家生命减1);
⑧界面上要能有够显示出当前的得分情况以及当前的生命值;
⑨对于游戏的设计,在游戏结束时能够有相应的提示。
三、
3
图3-1
在吃豆人游戏的类设计中,首先要确立的是类的关联、划分主次。整个游戏主要由两大部分组成,在这其中PacWorld类既是其中的一大组成部分也游戏一个重要的“舞台”,承载了其他的类方法,在这其中,设计者可以根据具体的游戏需要来加入相应的游戏元素、游戏规则,从而达到丰富游戏的目的。
{
min = 200;
max = 442;
for (int x = min; x<= max; x++)
{ pacworld [x][341] = true; }
min = 283;
max = 358;
for (int x = min; x<= max; x++)
{
pacworld [x][221] = true;
int square = 1;
if(pacworld [i+1][j] == true) square++;
else if(pacworld [i-1][j] == true) square++;
if(pacworld [i][j+1] == true) square++;
else if(pacworld [i][j-1] == true) square++;:
pacworld [x][213] = true;
pacworld [x][204] = true;
}
min = 120;
max = 522;
for (int x = min; x<= max; x++)
{
pacworld [x][426] = true;
pacworld [x][87] = true;
Position position = new Position();
Score scorE = new Score();
addObject(position,320,460);
addObject(pacman,320,257);
addObject(scorE,46,75);
addObject(inky,283,210);
而另一大组成部分Actor类则作为各种对象类的集合定义游戏中的各种方法。其中包括Animal类、Writing类以及Object类。Animal类中包含了两个重要的元素——PacMan类和Ghost类,分别实现吃豆人和怪物的运动、动画、触发事件等算法逻辑及调用方法。Writing类包含主游戏框架面板上计分板、位置显示、空白填充以及生命计数器的方法类。Object类中则是定义被吃的大小豆子。
addObject(blinky,320,171);
addObject(pinky,320,217);
addObject(clyde,358,210);
addObject(blankL,75,214);
addObject(blankR,575,214);
addObject(life1,70,350);
②.在路口处放置小豆子
③.放置完豆子使其计数器加一
public void CoinFill()
{
coins = 0;
for(int i = 0; i <pacworld.length; i++){
for(int j = 0; j <pacworld[i].length; j++){
if(pacworld [i][j] == true){
addObject(life2,45,350);
addObject(life3,20,350);
豆子的绘制(程序中放置在转角处)需要对通路进行统计,即CoinFill函数的square的计数:
①.在指定的区域放置大豆子,当吃到大豆子时所有的怪物立刻变为可以被吃掉的状态。
注:在吃掉大豆子后吃豆人的标记run会变为true,意味着此时可以吃掉怪物,这个状态的持续时间定义为5秒。
World类又分为PacWorld和MyWorld两个类,其中PacWorld类是游戏场景元素的一个大集合。作为一个舞台的大容器,它包括游戏区块(左中右三部分)的布局、边界(墙壁)的绘制、背景颜色、空白填充、位置信息显示、分数、大小豆子、怪物以及的位置生成、豆子的生成位置等元素,给游戏塑造出了一个整体框架。
游戏中央的场景中绘制出地图(边界线/墙壁),留出通道,在其中的相应位置放入对应的怪物、大小豆子以及游戏的控制主体——吃豆人,左右放置对应的计分板和计数器,构成整个游戏的基本元素框架。
图4-1
先定义各元素信息:
①左右空白填充:
Blank blankR = new Blank();
Blank blankL = new Blank();
CheckD:用于检查你可以去往哪个方向
private boolean checkD(char s)
{
int x = 0, y = 0;
switch(s)
{
case 'u': y=-steps;break;
case 'd': y=steps;break;
case 'l': x=-steps;break;
Java游戏编程基础课程
大作业报告
课题:吃豆人游戏的设计与实现
姓名:黄子强
学号:201517030207
同组姓名:刘照、杜威
专业班级:网工15102
指导教师:何青
设计时间:2018.6.18
一、
复习、领会、巩固和运用课堂上所学的JAVA游戏编程方面的技术知识,让学生掌握游戏设计的基本原理和游戏编程的基本方法,掌握游戏开发的一般步骤和相应文档的编制,能够设计、调试、运行一个完整的游戏项目;提高开发过程中的团队意识,锻炼学生书面和口头表达能力,为学生提供主动学习、积极探索与大胆创新的机会。
coins++;
}
else if(i >=283 && i <=358 && j >= 172 && j <= 221) coins = coins;
else if(square > 2)
{
addObject(new Coin(),i,j);
coins++;
}
}
}
}
c = coins;
}
4
在Animal类中定义了用于子类继承的抽象方法,如:方向的移动、方向移动的提前量判断等,在该类中还设置了角色的场景移动ost而言,他们的移动的范围要求比吃豆人更广提高难度,当他们从地图中央两侧的通道进入时,将会从另一侧出现。这种突然出现在身边的Ghost往往能提高玩家的紧张感,提升游戏性。