|
|
发表于 28-2-2011 12:04 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 28-2-2011 02:38 PM
|
显示全部楼层
geekman大大果然最Pro,每一个部分讲解都这么仔细。
刚出道做一个打砖块小游戏写代码差不多上1000行而已。 |
|
|
|
|
|
|
|
|
|
|
发表于 28-2-2011 04:51 PM
|
显示全部楼层
本帖最后由 geekman 于 1-3-2011 10:46 AM 编辑
你所说的读了电脑出来却坐和电脑无关的工作,只是那些“为了工作去读书”的人的说法,那些人只会强迫自己去读自己没兴趣,而在工作市场上广受欢迎的东西,然后考个不汤不水的成绩,自然不会找到理想的工作。
而如果你是“为了兴趣,并决定以兴趣为终身职业去读书”的人,那你就会注入所有的热情去学习,获得的优越的成绩,到时就不是你去找工作,而是工作来找你,再不济,你也能轻易的找到并获取你理想的工作。
其实,如果你只是打算写一个软件(游戏或者应用软件都好),对于高级数学的要求倒是不会很高,只是最低程度要能够理解各种数学原理。除非你的目的是完全吃通透那些Algorithm的涵义,不然你只需要达到不至于看到方程式就两眼一抹黑就行了。当然,如果你的游戏会牵涉到物理引擎,或者自行开发渲染引擎,那你就得学好Vector,Matrix,以及一些基本的 Trigonometry。
牢固的英语基础很重要,这会让你能够更容易的获取各种新的技术的信息。记住这个句子:
“Google is your best friend, your mentor, your god”
别把你的目标放在你上面所说的游戏上,至少目前不行。你可以把它们列为你的终极目标,但是如果你一开始就把它们当作目标,并且一开始就想着要做到那些目标,那你只会自我毁灭。先从简单的开始,哪怕只是一个撞砖游戏,你也能从中学习到各种技术,例如如何在电脑荧幕上描绘你的游戏画面,如何播放音乐,如何计算游戏物体的状态(速度,角度,反弹方向),读取玩家的输入,播放动画,诸如此类,慢慢地增加你编写的游戏的难度和复杂度,一点一点的累积下去才是正道。
至于RPG Maker的试用期限。。。这是个敏感话题,要嘛你就花一点钱买正版的,要不你就用心一点跟谷歌大神沟通,聆听祂的神谕吧 
介绍几个游戏开发网站和相关的网站给你:
www.gamedev.net 这里有许多的专业和非专业游戏开发者交流的网站。
www.joystiq.com 这是游戏界信息交流部落格,比较倾向于介绍和讨论游戏的游玩,不过这里也有许多游戏开发共识的介绍,如果你想了解那些专业游戏开发公司的背景,可以去爬爬看。
www.shmup-dev.com 这是个专注于射击游戏(Shoot 'em up)开发的论坛,虽然目前处于濒死状态,里面还是有不少有用的学习材料。Shmup 是排在撞砖游戏之后的学习对象游戏类型,它有较高的复杂度,但是依然不会太复杂。 |
|
|
|
|
|
|
|
|
|
|
发表于 1-3-2011 11:00 AM
|
显示全部楼层
我本身嘛,spm后其实我是打算混吃等死的了(申请UTM不被录取,Aggregate 10呢。。。)去混了一年的Form 6,当老师说要交stpm的考试费时我就退学了
后来我一个在新加坡读书的中学同学就跑来问我要不要申请义安理工学院,就填了表格,然后就被录取了去修读电脑电子工程,然后就开始了我的电脑世界之旅。。。就酱。我的学系其实是主修电脑硬体的,只是我自己花费功夫去学更深入的C语言,最后进入软件工程分流。
Blender是一款用来设计立体模型的软件,我是听说过它里面有内建一个简单的游戏引擎,应该只是用来给使用者测试自己设计的立体模型和游戏世界的。我本身并没有去研究,因为Blender的使用界面和建模方式和我用惯了的3D Studio相差太多了,无法适应。
至于如何尝试开始开发游戏,你可以爬一下帖子,看看我以前写的教学帖子,那些都是以初学者为对象的教学。 |
|
|
|
|
|
|
|
|
|
|
发表于 1-3-2011 05:02 PM
|
显示全部楼层
我已经毕业十多年了,目前是在一间电脑培训公司担任软件开发员,主要是开发一些软件供公司内部使用,以及开发一些行政系统/数据库前端给公司的客户使用的。
现在是电脑时代了啊,学电脑肯定不怕没饭吃,就算是医生律师总统都得学用电脑,都得看电脑工程师和软件工程师的脸色的。就这样跟你爸爸说吧。
坦白说,我的物理科普普通通罢了,我闲暇时候写的一些小游戏也没需要用到太复杂的运算。一般上来讲,应用软件或者游戏本身都不会需要你有个数学/物理博士学位(有当然是个优势,没有也不会让你寸步难行,一切看个人如何去做的方式罢了),因为那些数学方程式都不是可以直接放进电脑语言来用的,而是得经过一定的转换,以方便把数据带入在你的运算里面。 |
|
|
|
|
|
|
|
|
|
|
发表于 3-3-2011 12:14 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 3-3-2011 03:31 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 8-3-2011 03:21 PM
|
显示全部楼层
回复 geekman
想问问geekman你一些事情。你说过有心的话,可以去学一门电脑语言。但是小弟我不清 ...
arios 发表于 8-3-2011 12:59 PM 
我個認為, C和C++根本就是兩種概念很不相同的編程語言。
所以你不需要從C開始, 直接學習C++會對你更有利...
學了C再學C++會很混淆,也會惹上C的壞習慣。
P/S: 個人經驗 |
|
|
|
|
|
|
|
|
|
|
发表于 8-3-2011 09:14 PM
|
显示全部楼层
本帖最后由 geekman 于 8-3-2011 09:20 PM 编辑
就如同Megablue所说的,C和C++可以视为两种不同的语言。现如今是Windows的天下,所以你还是直接学C++好了,除非你打算编写工业机械驱动程式,不然C语言并不是那么好用。另外,C#也是不错的选择,在Windows环境里开发游戏,C#会成为主流。基本上C++和C#的文法有90%相似,所以不论你选择哪一个语言,要学另外一种也不会造成困扰。
如果你想要编译器,去下载Microsoft的Visual Studio 2008 Express Edition吧。里面已经包含C++和C#的编译器了。
至于书籍。。。我以前自学C++时看的是C++ Primer这本书,它几乎每年都有更新版,现在已经不知道是第十几版了。另外,我之前提过的Teach Youself ____ in 21 days系列的书也是可以一看的。这类书在Borders书店,MPH书店之类的都有出售的吧。再不然就上Amazon.com订购吧,只是阿玛逊不一定肯寄货到马来西亚,说是版权问题。 |
|
|
|
|
|
|
|
|
|
|
发表于 9-3-2011 10:55 AM
|
显示全部楼层
本帖最后由 geekman 于 9-3-2011 10:56 AM 编辑
坦白说,你现在是未曾接触过任何电脑语言的话,以C或者C++/C#作为开始并没多大差别,C是比较容易上手,因为它没有Object Oriented Programming的复杂度,不过代价就是无法轻易地做到OOP的东西,例如在Windows环境下编写程式。C的优势是能够快速直接和电脑硬体沟通,而OOP语言则因为隔了几个层面,效率就较差了点。
Dev C++我没用过,我一路来都是用Borland 的C++ Builder,只是这个编程软件经过数度易手,现在落入Embacadero手中,已经变得糜烂不堪,我不建议使用。新手还是直接从Visual Studio开始吧。当然,如果你真的十分憎恨Microsoft(我发现99%憎恨Microsoft的人都是嫉妒这公司有钱),或者立志为Linux/Unix或者Apple开发游戏,那就随你开心用什么就什么吧。
Amazon也是有卖二手书的,价格也颇廉宜,你去看它的Used Items就是了。 |
|
|
|
|
|
|
|
|
|
|
发表于 9-3-2011 11:52 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 9-3-2011 12:35 PM
|
显示全部楼层
回复 47# arios
这世界没有所谓的完美,更不会有完美编程员。电脑软件分类五花八门,没有人敢说自己十八般武艺样样精通。只要能把自己专长的分类吃通透,就已经受用不尽了,例如一个大师级的数据库软件设计师,写一个软件往往可以卖个数十千甚至上百千,但是他写的电脑游戏可能分文不值,反之亦然。
OOP 是一种电脑编程的概念,既然你的英语程度还不错,那就自己去维基百科看看吧,我在应用软件开发区也有提过,你可以去爬帖看看, 不过是没那么详尽就是了。
至于你的问题:
1)就拿MS Office 2007来说,很肯定的MS那里应该是使用至少Win Vista来开发这款软件,你可以询问还在使用XP的朋友,这款软件在XP里的表现和在Win7/Vista有什么差别吗?
2)目前来说,大多数开发者都是在求学时学习C++的。未来XNA Game Studio被各学院广泛采用教学之后,我相信C#会取代之,就如同C++取代了C一般。 |
|
|
|
|
|
|
|
|
|
|
发表于 9-3-2011 02:17 PM
|
显示全部楼层
本帖最后由 geekman 于 9-3-2011 02:19 PM 编辑
回复 51# arios
单单是想是不够的,还要去做。实际去做了才会知道有些事情无论怎么去想也想不到的,只有做了才知道原来是这样的。我发觉你提了很多问题,但都是停留在想象和猜测,至少我还没看到你开始问任何和编程有关的问题。如果你真的有实际去做,我想至少你会问什么是#define,#include,什么是void main (void),什么是 argc, argv。。。
如果你还是这样的猜测,你永远不会知道事实的真相。至于问题笨不笨,只有问了,被人弹了,才会知道原来如此,然后长个记性,以后别再犯就是了,至少你问了能够得到答案,即使不是很友好的答案。如果怕给前辈刷,那就问之前先想想,自己做点研究,真的弄不明白才来问,同时让前辈们了解你做过的努力,那么就会少很多被弹的机会。在IT的世界(不只是编程员的世界),只有靠自己努力的人才会被认同,并获得尊重的。
和你分享我的座右铭,跟Nike学来的:Just Do It!
至于C#和C++的问题,我想我说过不只一次了,不想再说了。 |
|
|
|
|
|
|
|
|
|
|
发表于 9-3-2011 03:00 PM
|
显示全部楼层
本帖最后由 geekman 于 15-3-2011 12:36 PM 编辑
以下是C++和C#的例子:同样都是Windows Form Application,同样都在上面放一个ListBox,一个Button,点击Button就会在ListBox里面加入10个String object:
Visual C#版:- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace WindowsFormsApplication1
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- for (int i = 0; i < 10; i++)
- {
- listBox1.Items.Add("Item" + i.ToString());
- }
- }
- }
- }
复制代码 Visual C++版:
- #pragma once
- namespace listbox {
- using namespace System;
- using namespace System::ComponentModel;
- using namespace System::Collections;
- using namespace System::Windows::Forms;
- using namespace System::Data;
- using namespace System::Drawing;
-
- /// <summary>
- /// Summary for Form1
- ///
- /// WARNING: If you change the name of this class, you will need to change the
- /// 'Resource File Name' property for the managed resource compiler tool
- /// associated with all .resx files this class depends on. Otherwise,
- /// the designers will not be able to interact properly with localized
- /// resources associated with this form.
- /// </summary>
- public ref class Form1 : public System::Windows::Forms::Form
- {
- public:
- Form1(void)
- {
- InitializeComponent();
- //
- //TODO: Add the constructor code here
- //
- }
- protected:
- /// <summary>
- /// Clean up any resources being used.
- /// </summary>
- ~Form1()
- {
- if (components)
- {
- delete components;
- }
- }
- private: System::Windows::Forms::ListBox^ listBox1;
- protected:
- private: System::Windows::Forms::Button^ button1;
- private:
- /// <summary>
- /// Required designer variable.
- /// </summary>
- System::ComponentModel::Container ^components;
- #pragma region Windows Form Designer generated code
- /// <summary>
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- /// </summary>
- void InitializeComponent(void)
- {
- this->listBox1 = (gcnew System::Windows::Forms::ListBox());
- this->button1 = (gcnew System::Windows::Forms::Button());
- this->SuspendLayout();
- //
- // listBox1
- //
- this->listBox1->FormattingEnabled = true;
- this->listBox1->Location = System::Drawing::Point(50, 29);
- this->listBox1->Name = L"listBox1";
- this->listBox1->Size = System::Drawing::Size(140, 264);
- this->listBox1->TabIndex = 0;
- //
- // button1
- //
- this->button1->Location = System::Drawing::Point(50, 299);
- this->button1->Name = L"button1";
- this->button1->Size = System::Drawing::Size(99, 29);
- this->button1->TabIndex = 1;
- this->button1->Text = L"button1";
- this->button1->UseVisualStyleBackColor = true;
- this->button1->Click +=
- gcnew System::EventHandler(this, &Form1::button1_Click);
- //
- // Form1
- //
- this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
- this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
- this->ClientSize = System::Drawing::Size(292, 524);
- this->Controls->Add(this->button1);
- this->Controls->Add(this->listBox1);
- this->Name = L"Form1";
- this->Text = L"Form1";
- this->ResumeLayout(false);
- }
- #pragma endregion
- private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
- for(int i=0; i<10; i++)
- {
- listBox1->Items->Add("Item" + i.ToString());
- }
- }
- };
- }
复制代码 差别显而易见,C++并没有将Form Designer的Code藏起来,所以多了很多东西,但是实际有作用的地方(button1_Click的内容)都是一样的。C#会显得较简洁,初学者较易上手,因为他们不必烦恼太多的细节。另一方面V C++(这里要指明是Visual C++,因为不同的C++派系,IDE产生的代码会有不同的,而C#目前只此一家,所以一说C#就知道是指Visual C#)则让编程员可以针对软件初始化的部分做出更多的细节修改。其实在C#里面也可以做到相同的东西,可是那并不是初学者该烦恼的。可以说C#与C++的差别在于[简单]与[完全操控]。但是语言文法可以说是几乎完全一样的。最明显的差别只是在于Class members referencing所使用的符号(dot (.) 和 arrow (-〉)),至于两者之间有什么分别嘛……等你学到Pointers的部分就会知道了。
另外,以下是C++ Builder的sample:- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "Unit2.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma resource "*.dfm"
- TForm2 *Form2;
- //---------------------------------------------------------------------------
- __fastcall TForm2::TForm2(TComponent* Owner)
- : TForm(Owner)
- {
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm2::Button1Click(TObject *Sender)
- {
- for(int i=0; i<10; i++)
- {
- ListBox1->Items->Add("Item" + IntToStr(i));
- }
- }
- //---------------------------------------------------------------------------
复制代码 和C#一样简洁,这就是为何即使我认为现在的C++ Builder那么的烂,还是继续使用它,因为我没打算把我所有的工作上的代码转去C#,一些API无法相容的关系。
希望这可以给你足够了解C#与C++之间的差别/相同之处。 |
|
|
|
|
|
|
|
|
|
|
发表于 9-3-2011 04:09 PM
|
显示全部楼层
本帖最后由 geekman 于 9-3-2011 04:11 PM 编辑
嗯,可是你又不明白的却没提问,而是竟在没实际意义的地方徘徊,你宁可去问应该选择C还是C++,也不提问什么是#include,请问,让那你弄明白了该选C还是C++之后,你明白了什么是#include了吗?
这就是你的问题所在。你不该再去烦恼要选什么语言,而是认定一种语言,然后去用心学习。电脑语言有很多东西都是共通的,学会了一种,再学另一种就不会再Blur blur了,顶多是小心别犯上习惯性的错误。
关于你的问题:
1)Curly brackets{} 表示的是在那个波浪括号里面的代码应该被当作是一个族群。
例如以下的分歧条件(if)的情形下:
- if(this_is_true)
- do_this();
- and_this();
- also_this();
复制代码 以及
- if(this_is_true)
- {
- do_this();
- and_this();
- also_this();
- }
复制代码 两者之间的差别在于在第一个代码里面,如果if的条件成立,只有第一个function(也就是 do_this())会被呼叫,而剩下的两行则不会受到if的条件的影响,都会被呼叫到。而在第二个例子里面,由于 do_this(), and_this()以及also_this()被波浪括弧被包围着,所有三个function都会被当作是同党,如果if的条件成立,三个都会被执行,如果不成立,三个都不会被执行。
2)#include是compiler directive command,也就是告诉你的编译器,在编译时要把这个指令所指定的档案(通常是源代码档source code file)的内容插入在那个位置。#include通常用来插入开头档Header file,不过也可以用来插入Source Code,data file之类的。
例如你有这个Header:my_struct.h
- typedef struct
- {
- int member_no;
- char member_id[10];
- }member_data;
复制代码 你可以在你的程式源代码的 main.cpp 档案里这样做:
- #include <stdio.h>
- #include "my_struct.h"
- void main(void)
- {
- member_data my_data[10];
-
- read_member_data(my_data);
- }
复制代码 当compiler编译你的程式时,就会把my_struct.h的内容代入在#include "my_struct.h"的位置,变成:
- #include <stdio.h>
- typedef struct
- {
- int member_no;
- char member_id[10];
- }member_data;
- void main(void)
- {
- member_data my_data[10];
-
- read_member_data(my_data);
- }
复制代码 以后在另一个程式里如果你再次需要用到member_data这个structure你只需#include相同的档案,就不必一直重复的键入my_struct.h的内容。
另外,#include <file>和#include "file"的差别在于 <> 会让compiler只在 drive:\c++_ide\includes\ 的folder里 (或者你在IDE里指定的system includes path)寻找那个档案,而 "" 版本的则会优先在你的source code现在的folder里寻找该档案,然后再去includes的folder里寻找。
3)()显而易见吧。。。虽然在不同的情形有点不同,例如在function之后,就代表括弧里的是该function的Argument,也就是要传递给function的数据。而在方程式里面用的话,就表示括弧里的运算拥有优先权,而在复合式括弧例如 x + y /(k * 500 + (sin(i)) 这里有三层的运算,compiler会优先计算sin(i),然后计算 k*500,以此类推。有些过数学的应该都会的。
4)if。。。别告诉我你不懂 if 是什么意思。。。在电脑语言里面,这是用于分歧运算,
if(condition)
{
do_this();
}
else
{
do_that();
}
这里的条件分歧就是:如果(condition)在经过运算评估出来的结果是正数值(true,通常以 1或以上的数值代表,另一方面false会以0或负数值来代表), 就会执行接下来的指令(do_this()),否则就会执行else之后的指令(do_that())。
5) 函数就是 http://zhidao.baidu.com/question/4381255
以及 http://zhidao.baidu.com/question/27677208.html?fr=qrl |
|
|
|
|
|
|
|
|
|
|
发表于 9-3-2011 05:26 PM
|
显示全部楼层
NDS 也是电脑,只是功能没有我们常用的个人电脑(PC)强大和广泛罢了。
既然你选定C语言,那就祝你好运了,加油吧。 |
|
|
|
|
|
|
|
|
|
|
发表于 9-3-2011 05:54 PM
|
显示全部楼层
本帖最后由 megablue 于 9-3-2011 05:56 PM 编辑
哈哈... 你竟然选了C 
不错不错... 很有志气!
P/S: C 的 GUI/Game rendering frameworks 少得可怜  |
|
|
|
|
|
|
|
|
|
|
发表于 9-3-2011 06:00 PM
|
显示全部楼层
回复 59# megablue
不必担心,当他需要使用 DirectX 的时候,自然会领悟C++的妙处了。
看来我的推销技术还真是不行,没把C#和XNA给推销出去。 |
|
|
|
|
|
|
|
|
|
|
发表于 10-3-2011 10:19 AM
|
显示全部楼层
C和C++可以视为两种不同的语言。现如今是Windows的天下,所以你还是直接学C++好了,除非你打算编写工业机械驱动程式,不然C语言并不是那么好用。
C是比较容易上手,因为它没有Object Oriented Programming的复杂度,不过代价就是无法轻易地做到OOP的东西,例如在Windows环境下编写程式。
我写下我的意见,你最终还是选择了C,我只能尊重你的选择了。别三心两意哦,选择了就要坚持,所以选择是很重要的。
C#也是不错的选择,在Windows环境里开发游戏,C#会成为主流。
以上这句,就让它像风一样消逝吧。
别担心,你选择的路我也走过,我当初也是在学校学的C语言,后来在想要编写Windows软件和使用DirectX才自学C++,我知道这条路哪里有坑洞,哪里有陷阱,等你掉进去后我会给你分析一下问题所在和告诉你 “这里有坑,下次小心别再掉下去了哦!” 的 |
|
|
|
|
|
|
|
|
|
|
发表于 13-3-2011 09:07 PM
|
显示全部楼层
回复 geekman
前辈的话要听才是上策。我不知道原来C语言有那么多的弱点,我之前是听说过C语言是C ...
arios 发表于 10-3-2011 12:22 PM 
那不是弱點,只是C的特色。
不同的語言有利於不同階層的開發工作,C很強大,但也需要較多的時間去學習及編寫。
由於現在大部分商業遊戲以及開發工具包的理念都傾向於Object Oriented 所以 學C++有利於遊戲開發. |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|