重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
学习内容大致可分为以下10点,但也要跟上技术发展的步伐,实时更新。
成都创新互联是专业的澜沧网站建设公司,澜沧接单;提供成都网站设计、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行澜沧网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
1、Java语言
Java语言体系比较庞大,包括多个模块。从WEB项目应用角度讲有JSP、Servlet、JDBC、JavaBean(Application)四部分技术。
(1)、Java Database Connectivity(JDBC)技术
在Java Web应用开发中,数据库管理系统(RDBMS)的使用是不可缺少的。JDBC(Java Database Connectivity) 是一种用于执行SQL 语句的 Java API。它由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的API,使他们能够用纯Java API 来编写数据库应用程序。
简单地说,JDBC 可做三件事:
l 与数据库建立连接,
l 发送SQL 语句,
l 处理结果。
(2)、Servlet技术
Servlet是运行在服务器端的程序,可以被认为是服务器端的applet。servlet被Web服务器(例如Tomcat)加载和执行,就如同applet被浏览器加载和执行一样。servlet从客户端(通过Web服务器)接收请求,执行某种操作,然后返回结果。
1.脚本:▲Scene_Title
这里面的紫色字体也就是我们可以改的地方。有几行是:
#
生成命令窗口
s1
=
"新游戏"
s2
=
"继续"
s3
=
"退出"
S1后面引号是开始游戏选择的时候出现的文字,可以改一下,S2、S3以此类推。
确定后按F12游戏测试
2.脚本:▲Scene_Menu
里面有如下几行:
#
生成命令窗口
#
s1
=
$data_system.words.item
#
s2
=
$data_system.words.skill
#
s3
=
$data_system.words.equip
#
s4
=
"状态"
s1
=
"敌物资料"
s2
=
"使用物品"
s3
=
"存档"
s4
=
"读档"
s5
=
"重新开始"
s6
=
"结束游戏"
前面不带#的S1~S6后面的文字可以改变,也就是游戏时按ESC开启画面的时候左边的一行了。
3.脚本:▲Scene_Save
里面的这几行
#--------------------------------------------------------------------------
#
●
初始化对像
#--------------------------------------------------------------------------
def
initialize
super("要保存到这个文件吗?")
SUPER后括号中引号里面的“要保存到这个文件么?”是可以改的,存档的时候上面写的字就是改后的文字。
4(两个脚本连说)脚本:①▲Scene_Load②■Scene_Load2
这两个脚本非常相似,一个是按ESC之后的读档显示文字,另一个是开始界面读取进度的文字,到底哪个是哪个我搞不清楚,先看代码:
#--------------------------------------------------------------------------
#
●
初始化对像
#--------------------------------------------------------------------------
def
initialize
#
再生成临时对像
$game_temp
=
Game_Temp.new
#
选择存档时间最新的文件
$game_temp.last_file_index
=
latest_time
=
Time.at(0)
for
i
in
0..3
filename
=
make_filename(i)
if
FileTest.exist?(filename)
file
=
File.open(filename,
"r")
if
file.mtime
latest_time
latest_time
=
file.mtime
$game_temp.last_file_index
=
i
end
file.close
end
end
super("要载入哪个文件?")
end
SUPER后“要载入哪个文件?”是要改的,与存档近似。
@@@@@最重要的@@@@@
5.脚本:■Window_PlayerDate
这个脚本应该是最有用的,显示了玩游戏的时候左面的攻击防御等一系列东西!脚本也要复制很长,所以我分开来讲:
self.contents.font.color
=
text_color(3)
#
self.contents.draw_text(4,
0,
70,
45,
"第",
2)
self.contents.draw_text(4,
0,
125,
45,
"层",
2)
这一段代码,是最前面显示XX层的界面,如果想在前面加上“第”(也就是第XX层)的话就要把#符号去掉,如果想改变字体的颜色就要看前面的color后面小括号里显示的数字了,每一个数字代表的颜色都不同,一共有7个颜色,就是1~7,可以换颜色。
self.contents.draw_text(4,
0,
40,
142,
"等级",
2)
self.contents.draw_text(4,
0,
40,
208,
"生命",
2)
self.contents.draw_text(4,
0,
40,
263,
"攻击",
2)
self.contents.draw_text(4,
0,
40,
318,
"防御",
2)
self.contents.draw_text(4,
0,
40,
373,
"魔防",
2)
if
$game_switches[Playerdate_magicdef]
self.contents.draw_text(4,
0,
40,
439,
"经验",
2)
self.contents.draw_text(4,
0,
40,
494,
"金币",
2)
self.contents.font.color
=
text_color(6)
self.contents.draw_text(4,
0,
60,
576,
"黄钥匙",
2)
self.contents.font.color
=
text_color(4)
self.contents.draw_text(4,
0,
60,
640,
"蓝钥匙",
2)
self.contents.font.color
=
text_color(2)
self.contents.draw_text(4,
0,
60,
704,
"红钥匙",
2)
这一段代码,是显示等级生命等东西的了,这里面好多我都没研究明白,以红钥匙那行的代码来说,4,0,60,704中的704代表上下,如果输入704以前的数字,“红钥匙”这三个字就会往上挪。不改变是正常的,要不就会里出外进了。如果要想等级一个颜色,生命一个颜色等,就要加脚本了,先给你们看加了颜色的代码,再给你们讲:
self.contents.font.color
=
text_color(1)
self.contents.draw_text(4,
0,
40,
142,
"等级",
2)
self.contents.font.color
=
text_color(2)
self.contents.draw_text(4,
0,
40,
208,
"生命",
2)
self.contents.font.color
=
text_color(3)
self.contents.draw_text(4,
0,
40,
263,
"攻击",
2)
self.contents.font.color
=
text_color(4)
self.contents.draw_text(4,
0,
40,
318,
"防御",
2)
self.contents.font.color
=
text_color(5)
self.contents.draw_text(4,
0,
40,
373,
"魔防",
2)
if
$game_switches[Playerdate_magicdef]
self.contents.font.color
=
text_color(6)
self.contents.draw_text(4,
0,
40,
439,
"经验",
2)
self.contents.font.color
=
text_color(7)
self.contents.draw_text(4,
0,
40,
494,
"金币",
2)
self.contents.font.color
=
text_color(6)
self.contents.draw_text(4,
0,
60,
576,
"黄钥匙",
2)
self.contents.font.color
=
text_color(4)
self.contents.draw_text(4,
0,
60,
640,
"蓝钥匙",
2)
self.contents.font.color
=
text_color(2)
self.contents.draw_text(4,
0,
60,
704,
"红钥匙",
2)
self.contents.font.color
=
text_color(3)
self.contents.draw_text(4,
0,
60,
768,
"绿钥匙",
2)
就是在每个代码前面加了self.contents.font.color
=
text_color(n)(n代表颜色代码)
就让每个字活灵活现了~~如果没改,将跟第XX层显示的颜色一样!
再继续说:下一段代码:
self.contents.font.color
=
text_color(3)
self.contents.draw_text(4,
0,
60,
770,
"中毒".to_s,
2)
if
$game_switches[13]
self.contents.font.color
=
text_color(5)
self.contents.draw_text(4,
0,
110,
770,
"衰弱".to_s,
2)
if
$game_switches[15]
self.contents.font.color
=
text_color(1)
self.contents.draw_text(4,
0,
60,
820,
"迟缓".to_s,
2)
if
$game_switches[12]
这就是中毒、衰弱、迟缓加到勇士身上后在左边显示的字了,如果不喜欢可以换哦!~~
6.脚本:■Window_EnemyDate
里面有得到怪物手册后可以显示怪物资料的东西了(镜子怪物在样板0729中没有,在0808样板中有了)
self.contents.font.color
=
text_color(0)
@pro="普
通"
case
skill.maxsp
when
self.contents.font.color
=
text_color(0)
@pro="普
通"
when
1
self.contents.font.color
=
text_color(3)
@pro="中
毒"
when
2
self.contents.font.color
=
text_color(5)
@pro="衰
弱"
when
4
self.contents.font.color
=
text_color(2)
作者:
藕色猫
2006-8-13
18:26
回复此发言
--------------------------------------------------------------------------------
3
【分析】魔塔样板脚本分析(绝对原创,申精)
@pro="吸
血"
@vampire=($game_actors[$game_variables[1]+1].hp*0.2).to_i
when
16
self.contents.font.color
=
text_color(11)
@pro="先
攻"
@first=1
when
32
self.contents.font.color
=
text_color(1)
@pro="迟
缓"
when
64
self.contents.font.color
=
text_color(12)
@pro="魔
攻"
@magicatk=@md
when
128
self.contents.font.color
=
text_color(6)
@pro=skill.eva.to_s+"连击"
@turnatk=skill.eva
when
256
self.contents.font.color
=
text_color(4)
@pro="领
域"
when
512
self.contents.font.color
=
text_color(9)
@pro="爆
击"
@edam=1.2
when
1024
self.contents.font.color
=
text_color(10)
@pro="隐
形"
when
2048
self.contents.font.color
=
text_color(8)
@pro="无
敌"
when
4096
self.contents.font.color
=
text_color(9)
@pro="削
血"
when
8192
self.contents.font.color
=
text_color(7)
@pro="镜
子"
if
skill.atk$game_actors[$game_variables[1]+1].str
skill.atk=($game_actors[$game_variables[1]+1].str).to_i
end#只有怪物基础防御小于勇士攻击后才使它的防御等于勇士攻击-1
when
8
self.contents.font.color
=
text_color(4)
@pro="坚
固"
if
skill.pdef$game_actors[$game_variables[1]+1].str
skill.pdef=($game_actors[$game_variables[1]+1].str+1).to_i
end#只有怪物基础防御小于勇士攻击后才使它的防御等于勇士攻击-1
end
普通、中毒、衰弱、吸血、先攻、迟缓、魔攻、连击、领域、暴击、隐形、无敌、削血、镜子、坚固。这些文字都可以改,比如在颠峰魔塔中就改了部分文字,领域改成怪异者……这些如果改了,在怪物属性中也会显示的到!
下一段代码:
self.contents.draw_text(120,
y,
a,
32,
"生命",
0)
self.contents.draw_text(230,
y,a,
32,
"攻击",0)
self.contents.draw_text(340,
y,
a,
32,
"防御",0)
self.contents.draw_text(230,
y+32,
a,
32,
"经验",
0)
self.contents.draw_text(120,
y+32,a,
32,
"金币",
0)
self.contents.draw_text(340,
y+32,
a,
32,
"损失",
0)
这上面千万不要以为是你的生命攻击防御,而是怪物的,如果改一下会很好哦!在样板0808中把金币改成了魔塔币,经验改成经验点,感觉不错!
7.脚本:▲Window_Gold
这段脚本本来我不想说,因为做魔塔样板的人都会把这个写到里面,如果改了,魔塔样板的作者不会高兴的!就是按ESC后的左下角的东西,样板0729中显示Ver0729
,这些如果不征求样板作者同意不要改,除非在魔塔中绘制了样板资料。
#--------------------------------------------------------------------------
#
●
刷新
#--------------------------------------------------------------------------
def
refresh
self.contents.clear
self.contents.font.color
=
system_color
self.contents.draw_text(0,
0,
130,
32,
"Ver0816",
1)
end
end
这段代码中“Ver0816”(0816是我最近要弄的样板)是可以改的,在颠峰魔塔中就改成颠峰魔塔,如果字多了会发现字体小了,不好看!
8.脚本:Window_PlayTime
里面显示的是游戏时间的脚本,脚本部分代码如下:
#--------------------------------------------------------------------------
#
●
刷新
#--------------------------------------------------------------------------
def
refresh
self.contents.clear
self.contents.font.color
=
system_color
self.contents.draw_text(4,
0,
120,
32,
"游戏时间")
游戏时间是可以改的,最好是4个字的,要不字会小,可以改成追忆时间,回忆时间等
9.脚本:Window_Steps
显示的是走过的步数,代码如下:
#--------------------------------------------------------------------------
#
●
刷新
#--------------------------------------------------------------------------
def
refresh
self.contents.clear
self.contents.font.color
=
system_color
self.contents.draw_text(4,
0,
120,
32,
"步数")
步数是可以改的,我就不多说了。
package com.lxi;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Rpg {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
System.out.println("在这里输入两个人物进行PK,以英文逗号分隔: [BM,DH,MK]");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ClassPerson c1;
ClassPerson c2;
try {
String temp = br.readLine();
String[] str = temp.split(",");
if (str.length != 2) {
throw new Exception("输入格式有误,按默认PK");
}
c1 = (ClassPerson) Class.forName("com.lxi."
+ str[0].toUpperCase());
c2 = (ClassPerson) Class.forName("com.lxi."
+ str[1].toUpperCase());
} catch (Exception e) {
// TODO Auto-generated catch block
c1 = (ClassPerson) Class.forName("com.lxi.BM");
c2 = (ClassPerson) Class.forName("com.lxi.DH");
}
try {
Person p1 = c1.newInstance();
Person p2 = c2.newInstance();
long time = System.currentTimeMillis();
long nextTime1 = (long) (time + p1.coldTime*1000); //
long nextTime2 = (long) (time + p2.coldTime*1000); //发动攻击的时间
System.out.println("---游戏开始---");
while (true) {
long currenTime = System.currentTimeMillis();
if (nextTime1 currenTime) { //时间到则发动攻击
p1.hit(p2);
nextTime1 += p1.coldTime*1000 + p1.waitTime*1000; //下次攻击时间=冷却时间+被晕眩时间
p1.waitTime = 0; //回合结束,重置被晕眩时间为0
}
if (nextTime2 currenTime) {
p2.hit(p1);
nextTime2 += p2.coldTime*1000 + p2.waitTime*1000;
p2.waitTime = 0;
}
}
} catch (ClassCastException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.lxi;
import java.util.Random;
class BM extends Person {
public BM() {
val = 650;
coldTime = 1.5;
fight = 40;
chanceHit = 3;
chanceDefense = 3;
waitTime = 0;
}
int count = 0; //防御技能发动的次数
int temp = 40; //攻击力,值同fight
boolean hitFlag = false;
boolean defenseFlag = false;
Random rand = new Random();
public void hit(Person p) {
if (rand.nextInt(10) chanceHit) {
fight = fight * 2; //发动双倍攻击
hitFlag = true;
}
int hurt = p.defense(this);
p.val = p.val - hurt;
fight = temp; //还原为单倍攻击
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
System.out.println(this.getClass().getSimpleName() + "攻击"
+ p.getClass().getSimpleName() + ","
+ this.getClass().getSimpleName()
+ (this.hitFlag ? "发动攻击技能 " : "未发动攻击技能 ")
+ p.getClass().getSimpleName()
+ (this.defenseFlag ? "发动防御技能 " : "未发动防御技能 ")
+ this.getClass().getSimpleName() + ":" + this.val + ","
+ p.getClass().getSimpleName() + ":" + p.val);
hitFlag = false;
defenseFlag = false;
}
public int defense(Person p) {
if (rand.nextInt(10) chanceDefense) {
if (count != 0) {
p.val = p.val - p.fight;
count++;
defenseFlag = true;
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
}
}
return p.fight;
}
}
class MK extends Person {
public MK() {
val = 700;
coldTime = 2.5;
fight = 50;
chanceDefense = 6;
chanceHit = 3;
waitTime = 0;
}
boolean hitFlag = false;
boolean defenseFlag = false;
Random rand = new Random();
public void hit(Person p) {
if (rand.nextInt(10) chanceHit) {
p.waitTime = 3; //使对方晕眩3s
hitFlag = true;
}
int hurt = p.defense(this);
p.val = p.val - hurt;
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
System.out.println(this.getClass().getSimpleName() + "攻击"
+ p.getClass().getSimpleName() + ","
+ this.getClass().getSimpleName()
+ (this.hitFlag ? "发动攻击技能 " : "未发动攻击技能 ")
+ p.getClass().getSimpleName()
+ (this.defenseFlag ? "发动防御技能 " : "未发动防御技能 ")
+ this.getClass().getSimpleName() + ":" + this.val + ","
+ p.getClass().getSimpleName() + ":" + p.val);
hitFlag = false;
defenseFlag = false;
}
public int defense(Person p) {
if (rand.nextInt(10) chanceDefense) {
defenseFlag = true;
return p.fight / 2; //防御技能发动,伤害减半
}
return p.fight;
}
}
package com.lxi;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
//三个人物的基类
abstract class Person {
int val; //生命值
double coldTime; //冷却时间
int waitTime; //晕眩时间
int fight; //攻击力
int chanceHit; //发起主动技能的概率
int chanceDefense; //发起防御技能的概率
abstract void hit(Person p); //攻击技能
abstract int defense(Person p); //防御技能,返回被伤害点数
}
class DH extends Person {
public DH() {
val = 600;
coldTime = 1.0;
fight = 30;
chanceHit = 3; //表示30%的概率
chanceDefense = 3;
waitTime = 0;
}
Random rand = new Random();
boolean hitFlag = false; //主动技能发动的标识
boolean defenseFlag = false; //防御技能发动的标识
public void hit(Person p) {
if (rand.nextInt(10) chanceHit) { //发动主动技能
int hurt = p.defense(this);
p.val = p.val - hurt;
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
val = val + hurt;
if (val 600)
val = 600;
hitFlag = true; //标记主动技能已经发动
} else { //进行普通攻击
int hurt = p.defense(this);
p.val = p.val - hurt;
if (p.val = 0) {
System.out.println(this.getClass().getSimpleName() + "胜出!");
System.exit(0);
}
}
System.out.println(this.getClass().getSimpleName() + "攻击"
+ p.getClass().getSimpleName() + ","
+ this.getClass().getSimpleName()
+ (this.hitFlag ? "发动攻击技能 " : "未发动攻击技能 ")
+ p.getClass().getSimpleName()
+ (this.defenseFlag ? "发动防御技能 " : "未发动防御技能 ")
+ this.getClass().getSimpleName() + ":" + this.val + ","
+ p.getClass().getSimpleName() + ":" + p.val);
hitFlag = false; //
defenseFlag = false; //重置标记,下次重用
}
public int defense(Person p) {
if (rand.nextInt(10) chanceDefense) {
defenseFlag = true; //标记防御技能已经发动
return 0;
} else {
return p.fight;
}
}
}