CS、冰封王座、仙剑游戏分别用哪种语言作为主程序编写的

Python018

CS、冰封王座、仙剑游戏分别用哪种语言作为主程序编写的,第1张

转自某位大侠的回答:

一般游戏引擎都是用C或者C++开发的,3D游戏很少有java或者C#的,尤其是大型游戏,基本都是C/C++与一些HLSL作为基础的。大部分都是使用商业游戏引擎。

对于RPG等情节性很重要的游戏,script会被用来写剧情以及事件关联等,使用的script语言可以是目前有的商业语言,也有的引擎实现了自己的script。

当然,也有很多游戏是自己开发的游戏引擎,一般来讲C/C++用的多。开发工具一般来说不是很重要,因为一般的游戏引擎都会对若干平台若干编译器进行支持的。

一般来说VC肯定有了,而且还是分2001,2003,2005版的,有的还有g++和Dev-C++的支持。

讲得很专业,不知道楼主能否看懂,呵呵!

下面是通俗点的,重点在上面~~~

引擎一般都是c,c++

以仙剑为例:

DOS版的仙剑是用Borland C++ for DOS写的

仙剑98柔情版是用的是VB

剑侠情缘II是用C++ Builfer写的。

其他RPG大多是用VC,

开发游戏(专业级的游戏)需要精通C++

熟练Win32 SDK

掌握DirectX技术

会用一种32位的C++编译器(VC,C++Builder,DevC++,Borland C++)

还要有灵感,创意,等等。。。

写的很乱,勉强能看懂.

用二叉树就能实现.

public class SkillTree {

private class Node{

static final int UNDEF=0

int key

int value

String name

Node left

Node right

Node(int key,int value,String name){

this.key = key

this.value = value

this.name = name

left = null

right = null

}

public String toString(){

return "("+name+","+value+")"

}

}

private Node root

public SkillTree(){

root = null

}

public void insert(int key,int value,String name){

Node newNode = new Node(key,value,name)

if(root == null){

root = newNode

}else{

insertNode(root,newNode)

}

}

private Node getNode(int key) throws Exception{

Node result = root

while(result.key != key){

if(result.value == 0){

return null

}

if(key <result.key){

result = result.left

}else{

result = result.right

}

if(result == null){

throw new Exception("Can't find value by "+key)

}

}

return result

}

public int getValue(int key) throws Exception{

return getNode(key).value

}

private void insertNode(Node subtreeRoot,Node newNode){

Node current = subtreeRoot

while(true){

if(newNode.key<current.key){ //go left

if(current.left == null){

current.left = newNode

return

}else{

current = current.left

}

}else{ //go right

if(current.right == null){

current.right = newNode

return

}else{

current = current.right

}

}

}

}

public void setPoint(String name,int point){

int key = getKey(name)

if(key == -1){

System.out.println("没有这个技能名称:"+name)

return

}else{

try {

Node current = getNode(key)

if(current == null){

System.out.println("你还没有拥有这项技能."+name)

return

}

if(point >=0){

current.value = point

}else{

System.out.println("技能点不能为负.")

return

}

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace()

}

}

}

public int getKey(String name){

if(name.equals("冰弹")){

return 50

}else if(name.equals("冰风暴")){

return 20

}else if(name.equals("冰封装甲")){

return 60

}else if(name.equals("冰尖柱")){

return 10

}else if(name.equals("暴风雪")){

return 40

}else if(name.equals("碎冰甲")){

return 70

}else if(name.equals("冰封球")){

return 30

}else if(name.equals("寒冰装甲")){

return 80

}else{

return -1

}

}

public void view(Node subtreeRoot){

if(subtreeRoot !=null){

System.out.print(subtreeRoot+"[")

view(subtreeRoot.left)

System.out.print(",")

view(subtreeRoot.right)

System.out.print("]")

}else{

System.out.print("N")

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

SkillTree st = new SkillTree()

st.insert(st.getKey("冰弹"),0,"冰弹")

st.insert(st.getKey("冰风暴"),0,"冰风暴")

st.insert(st.getKey("冰封装甲"),0,"冰封装甲")

st.insert(st.getKey("冰尖柱"),0,"冰尖柱")

st.insert(st.getKey("暴风雪"),0,"暴风雪")

st.insert(st.getKey("碎冰甲"),0,"碎冰甲")

st.insert(st.getKey("冰封球"),0,"冰封球")

st.insert(st.getKey("寒冰装甲"),0,"寒冰装甲")

st.view(st.root)

System.out.println()

st.setPoint("冰风暴",5)

st.view(st.root)

}

}