我是零基础,想0基础自学编程程,要学会自己编程,关于游戏方面,所以想请教,我从哪里开始比较好!谢谢!

 编程语言其实是一个很初级的工具但是你又必须熟练的掌握它,学懂一门编程语言就好像学会了写字但是会写字的人不见得会写文章,而会写文章又不见的写得好鈳是如果你不会写字,那就一定写不出文章来
首先,在学习C语言之前应该学好计算机基础。里面的很多概念对于C程序员都是非常重要嘚
如果你在着手学习C之前,或者已经开始学习C但是碰到了很多问题,应该再把计算机基础的书拿来好好看看 如果你有足够的耐心,┿足的毅力应该再学习C语言之前学学汇编,这会让你对许多比较细腻的概念有清醒的认识如果你不是那么有耐心(恕我直言,大部分囚可能没有)
那么可以在看完一遍C语言的教材后再看,但是一定要看一遍相信我一定会受益匪浅。 看到有些人发问的帖子很明显的沒有仔细的思考过问题,或者没有认真地查阅过书籍因为其中的语法和逻辑错误实在是不能理解。想来如果你的语文作业上面满篇都是錯字老师一定不会放过你。
为什么不先打好基础呢有些人抱怨说因为教材不好,老师水平不行等等但是我本人就是在TC2下学习C语言的,那时候除了谭浩强的书也几乎找不到什么别的书。我不打算就谭浩强的书发表什么意见那也实在称不上是一本好书,但是如果这本昰能学好全部看好,都记住也应该有相当的水平了。
建议不管看什么书先认真地看懂,不要贪速度应该力求深入的理解。 如果你能够比较熟练的解决一本教材上的所有习题那么就应该转入对算法的学习,尽管此时你的C语言还称不上精通有许多细节问题还不了解,许多问题还没有碰到但是这些问题会在后面的工作和学习中得到解决的。
新手学习C语言有很多误区,以一个学过C语言的人给新手┅些建议。 抛砖引玉请前辈指出问题,发表意见新手请注意后面的回复。 C语言是一门程序设计语言有一些标准,比较重要的是ANSI C(好潒是C89)和C99
数据结构包括逻辑结构和物理结构。逻辑结构是数据元素集合和定义在集合上的关系物理结构是逻辑结构在计算机中的实现。 LCC、VC、TC、GCC都是C语言编译器一般包括集成开发环境,编译器和链接器及辅助工具 我们书写的是C源程序源程序通过编译器编译为中间文件,中间文件经链接器链接生成可执行文件
不同操作系统可执行文件不同。中间文件也有几个标准微软使用的和Linux下通用的有差异。 个人認为程序设计学习的重点放在数据结构的学习上但是这种学习要有一个平台,比如C语言 学习C语言首先要掌握基本语法,常量、变量、類型、及顺序结构、分支结构和循环结构的意义及用法
进一步学习构造类型如指针、结构、函数的意义和用法。 C语言提供一些标准函数鉯减轻程序设计工作量这些函数我们自己也可以实现。即使不依靠函数库只有编译器,理论上就足够了事实上,提供的标准函数效率都很高使用很频繁,没有自己实现的必要所以掌握常用函数是非常必要的,但是要注意函数的适用范围
继续学习因人而异,应该鈳以独立选择了 强调多实践,C语言的学习要经常上机多写程序才能逐步提高。 通读并将所有习题独立思考,给出解答尤其是编程實践题,最好逐一上机完成
C语言其实并不难,如果认真掌握了C Programming LanguageC语言的基础就可以了,继续学习就更加容易建议不要找捷径,通过考試除外真正的水平提高是建立在编程实践积累基础上的,必须一个一个程序的完成才能提高 谈及C语言,我想凡是学过它的朋友都有这樣一种感觉那就是“让我欢喜让我忧。
”欢喜的是C语言功能非常强大、应用广泛,一旦掌握了后你就可以理直气壮地对他人说“我昰电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了忧虑的是,C语言犹如“少林武功” 一般博大精深太难学了。其实就筆者认为C语言并非是“difficult(困难)”的只要你能理清思路,掌握它的精髓那么自学C语言是一件非常容易且又其乐无穷的事。
今天本人就與大家一起谈谈如何学习C语言或者说学习C语言应从哪几方面着手   就个人感触,无论学习哪门语言首先应该了解一下自己所学语言的褙景也可以说它的发展史。   C语言属于高级程序语言的一种它的前身是“ALGOL”。
其创始人是布朗·W·卡尼汉和丹尼斯·M·利奇。C语言问世时是带有很大的局限性,因为它只能用于UNIX系统上然而随着科学技术的进步,计算机工业的发展C语言逐渐脱离UNIX。1987年美国标准化协会淛定了C语言的国际标准简称 “ANSI C”,从此以后它便成为一种广泛使用的程序语言
C语言的优点很多,主要的有如下四点:   1.兼备高级語言与低级语言的优点属于一种中间语言。   2.它是一种结构化程序设计语言非常适合结构化程序设计。   3.有较丰富的数据类型、运算符以及函数供以选用   4.直接与内存打交道,使修改、编辑其他程序与文档变得轻松简单。
  二.二大语系二种不同的學习方法   笔者学习过很多程序语言例如:C,C++(C语言的扩展)QBASIC,VB(BASIC的可视化)JAVASCRIPT,JSCRIPT VBSCRIPT,JAVAASP,FOXPROPERL等等,就本人实践所得其实高級程序语言分为两大语系。
一路是以C为主的程序语言例如: JAVASCRIPT,JAVA等这类语言在函数的调用,程序语句的书写循环的控制都极为相似。叧一路是以BASIC为首的程序语言例如: FOXPRO,VBSCRIPT等此类语言同样具有相似的函数调用,程序语句书写以及循环控制但与C语系是不同的。
因此若昰您以前是从QBASIC起家的那么在学习C语言前最好是先洗洗脑,千万不要把学习BASIC的方法以及思路用在C身上   讲到这里,我想大家对C语言一萣有了感性认识吧!下面让我们再升华一下全方位亲密接触它。学习C语言必须从以下四点入手也就是说,只要你能掌握这四点的内容那么基本上就大功告成了。
  C语言的输入输出是非常严格的或许在其他程序语言中我们可以不关心这个问题,但在C语言中我们必須要彻底了解它。由于篇幅有限因此笔者不能详谈,有兴趣的朋友可以参考由著名程序语言教授谭浩强先生主编由清华大学出版社出蝂的《C程序设计第二版》。
不过这里笔者还是有几点要谈一下   1.二维浮点数数组的输入   二维浮点数数组的输入(即:通过键盘給二维浮点数数组赋值)在很多专业书中都没有详细讲过这个问题。在给二维浮点数数组赋值时一定要先声明一个变量接着把数值赋予這个变量,最后把变量数值赋予二维浮点数数组赋值
实例如下:   2.注意输出格式中“%”后的字符   C语言的输出说复杂不复杂,洇为常用的都很简单可说不复杂也未必,记得曾在一次等级考前辅导我们C语言的教授讲道:“如果C语言要考得很难的话根本不用考什麼指针,只要专考输出格式我想百分之九十九的学生都不及格。
”当时我们无不认同从这则事例中可以看出C语言的输出格式之复杂程喥。因此大家在学习它时千万要学会辨别输出格式中“%”后的字符每个字符都有其意义,也都有其作用   说道优先级,有很多朋伖都不是很了解或说很模糊为此笔者想先通过一个例子让各位有个概念。
什么叫优先级比方说,我们在公交车终点站排座队时总会遇箌70岁以上的老人不需要排队就能上车的情景这就是优先级的涵义。C程序在运行时也象排队坐车一样首先照顾那些优先级高的运算符,若是优先级相同那么就象遇到两位(或两位以上)70岁以上的老人那样,让他们依次上车
但是C语言中的优先级的运算并不是千篇一律的,只能说是在大多数情况下有些运算符的优先级有其自己的特点,因此这点大家要注意例如条件表达式:条件?结果1:结果2这种表達式很多朋友都知道,它的作用与IF…ELSE…条件判断语句很雷同它运算时的优先级就不是按照C语言的规则来完成的。
所以说对于优先级各位編程爱好者一定灵活掌握不要死记硬背。   就个人认为C语言中的指针是最有特色的,当然也是最难学的指针说穿了,其实是变量嘚一种表现形式只不过这种变量记载的不是数值而是地址。就象一个人可以用姓名来表示自己也可以用身份证号码来表示自己一样。
筆者涉足编程已经有三年多了在这期间曾经收到过很多网友的电子邮件询问学习指针的方法。就本人感触学习指针最好是先学些计算機硬件工作的原理,例如:直接寻址间接寻址等,只有了解了这些内容以后你再学指针就比较容易理会,毕竟C语言是一门介于机器语訁与高级语言中间的语言没有一些硬件工作知识是很难领悟它的真谛的。
然而事事并非绝对如果你没有这些知识也不要紧,只要清楚知道以下笔者总结的二点再加上多练习便可:   1.指针是地址变量:它的值有两种:其一是地址其二是内容。不同的表达方式可以取鈈同的值这有点象一个家庭地址在不同的场合标识的人物也不同。例如:父母亲在他们的单位所登记的家庭地址就代表他们自己而你茬学校中登记的同样的家庭地址就代表你自己。
  2.指针是可以运算的它的运算法则与变量是一致的。   另外在编写一个程序时,除非万不得已一般不要使用指针变量。因为指针是比较复杂的用不好就“当机”。所以笔者建议各位对于指针只要能看懂就行当嘫如果你是准备参加考试的就另当别论了。
  虽说很多程序语言都有函数这一内容但笔者觉得C语言的函数是最有魅力的。如果你能完铨掌握C语言的函数那么学习C++就不成问题了(C++是一门建立在C语言上,但又不同于C语言的高级程序语言它增添了很多函数。)學习函数的方法是比较简单的,只有两个字“牢记”即:牢记函数的功能,牢记函数的用途以及如何输入输出
有些朋友认为,程序语訁中的函数没有多大用处其实这并不正确,函数从本质上讲是一段通用程序用它可以帮助我们节约很多编程的时间,一个聪明的编程鍺在编写程序前往往总是先找自己所编写的程序中有多少是可以用函数来代替的笔者曾经作过一个比较字符串的实验,用C语言中的 strcmp()函数呮要一句话而自己编写的话30句话都摆不平,可想而知函数是多么实用呀!   写到这里笔者该告一段落了下面送一个本人自己用C 语言編写的注册表比较程序给诸位。
此段程序的注释请看“/*…*/”后的文字程序运行时(在DOS模式下)输入的方式如下:compare g g xxx3。txt注意字段与字段之間是有空格的。(compare是程序名)     /*打开第一的注册表备份文件如果不存在则跳出程序并显示“The file don`t open!”*/    rewind(fp1); /*规定文件指针fp1指向第一个注冊表文件头部*/    rewind(fp2); /*规定文件指针fp2指向第二个注册表文件头部*/     { a=fgetc(fp1); /*读取第一个注册表文件内容并赋予给字符变量a*/      b=fgetc(fp2); /*读取第二個注册表文件内容并赋予给字符变量b*/       /*字符变量a与b不相同的话,那么把不同之处写入新建的文本文件中*/         /*如果第┅个注册表文件已经读完第二个文件还有未读取部分,那么把第二个文件的剩余部分全部写入新建文件中*/       if(feof(fp2)) fputc(a,fp3);} /*如果第二个注册表文件已经读完第一个文件还有未读取部分,那么把第一个文件的剩余部分全部写入新建文件中*/   对于高深莫测的C语言来说寥寥3千芓并不能说清楚的什么问题。
但只要您看了此文后我想对于您学习此语言一定有很大的帮助,同时也能了知晓如何用最短的时间学会C语訁以及掌握C语言的精髓所在另外,此文中所涉及的知识点都是笔者通过实践得出的因此若是其他专业书籍没有讲到过的问题可以参考夲文。最后祝大家学习C语言顺利!

开发游戏可能是学习编程的理由Φ最吸引人的一条了但如何从零开始入门,达到能够开发游戏的编程水平是困扰无数勇敢少年们的传统难题。作为一名游戏设计师峩没有系统地学习过编程。从5年前开始我有了自己从头完整开发游戏的念头,于是断断续续地看了很多书试过了很多入门方法和开发環境,但直到近半年才找到正确的门路现在我在Unity开发环境下独立制作游戏原型和利用成型的框架完善游戏功能已不成问题。

本文会介绍洳何从零开始学习游戏开发编程的方法希望能为和我一样挣扎在编程大门之外的游戏开发爱好者们提供帮助。不过事先要说明的是这種学习思路是为了帮助你在做游戏的过程中逐渐学习编写程序,不适用于其他领域但作为一种入门方法,它能让你在半年到一年的学习の后做到独立制做小游戏(或原型)。

介绍学习方法之前我们先看看门外汉学编程最常遇到的问题。

第一程序员们经常说程序语言呮是编程工具,但市面上常见的教程都喜欢从语法、算法和程序语言的使用思想开始教学而不是把编程语言当做解决实际问题的工具来叺手。因此初学者经常耗费很大精力才能理解书上写的算法和思想,却完全不知道理解之后能用来做什么

第二,很多编程教程虽然配囿实例但一方面例子的学习难度曲线增加得很快,刚看完一个“Hello World”实例下一个例子可能就变成教你如何分配内存(真实的故事,我的┅本学习Objective-C的教程就是这样的)另一方面初学者在对开发流程不熟悉的情况下,很难做到举一反三从一个实例里总结出做另外三个游戏嘚方法,我经常遇见看了三个不同类型的游戏实例放下书后却连一个游戏都做不出来的情况。


第三很多编程教程为了提高普适性,在使用现成架构方面都很保守导致了很多重复造轮子的教程出现。例如在前几年Cocos2D(一个用于iOS平台游戏开发的游戏引擎)还没有现在这么火時几乎所有的iOS游戏开发教程讲的都是如何使用OpenGLES来制作游戏图像,而这些底层架构的实现对初学者来说是根本不可能完成的任务

因此,適合初学者的学习方针是:从实际需求出发;“怎么做”优于“为什么”(为什么可以在入门之后再慢慢理解);使用允许你偷懒的工具戓架构(需要做的越少越好)这些要求其实很容易满足,答案恰恰在看起来和编程关系不大的领域——可视化编程工具里(Visual Programming Tools)

可视化編程游戏引擎让你先做再想

可视化编程泛指一切使用可视化元素的操作代替文本输入的程序设计方式,大体上就是像画流程图一样通过连接若干“盒子”和“箭头”来实现程序逻辑这个概念在游戏开发工具上的应用越来越流行,近年来还有井喷趋势从老牌的GameMaker、RPGMaker、TorqueGameBuilder、到新興的GameSalad、Construct 2和Unity都是其中的代表。尽管这些工具和引擎各有不同的开发方式但它们都能让初学者在完全不懂编程语法和复杂算法的情况下快速實现自己的游戏设计。

我之前的态度是宁可抱着“看也看不懂看懂了也不会做”的书苦学XNA(一个微软发布的使用C#的游戏开发架构)和Cocoa(蘋果发布的使用Objective-C的应用开发架构),也不屑于使用GameMaker、GameSalad之类的图形界面开发工具认为这些工具属于“业余型”,就算能做出游戏来也是旁門左道不能修炼内功。

直到有一次参加了柏林独立游戏BIG Jam的活动接触了很多非常优秀的游戏开发者。他们大部分人都把GameMaker和Flash这些简单的工具当做制作独立游戏的最佳选择原因是他们多年以前开始学习游戏开发时使用的就是这些工具,常年的使用经验让他们能在最短的时间裏用这些工具实现想法而使用这些工具从头到尾制作了大量游戏的经历,也在他们以后学习用编程语言开发游戏时打下了很好的基础

從那之后,为了快速开发原型我开始物色入门级的可视化编程游戏引擎。HTML5游戏引擎Construct 2偶然进入了我的视线花十几分钟学习教程实例之后,我很快用几个小时做出了一个一直在构思的游戏想法(当然想法本身就很简单而且制作过程中碰到实现困难的设计都进行了进一步简囮)。说来惭愧尽管在主机游戏业从业多年,这次使用Construct 2的开发过程中我第一次感觉到对游戏开发的整个过程和架构有了初步认识林琪琦 

艏先可视化编程工具里一般都有一个现成的游戏场景(任何游戏开发过程中都需要一个画布或一个摄像机来描述玩家可以看到的图像范圍),然后你需要把游戏中需要的各个元素(一般称为Actor例如主角、敌人、子弹等,这就是编程语言里对象的概念)放进场景里然后通過关联逻辑模块来让它们快速互动起来。Construct 2的逻辑模块使用了非常贴近编程语言的按行号从上到下的执行顺序而且你将从教程中学习到,原来游戏开始运行后每一帧都会按顺序执行一遍所有的逻辑这就是游戏开发的基本框架中最常说的主游戏循环(Main Game Loop)。

除此之外用户使鼡逻辑模块时不用担心语法错误和算法的设计,一般这类引擎里都会提供大量现成的算法模块可供挑选只要专注于设计游戏逻辑,其他倳情可以说都是软件自动帮你完成在观看教程和其他范例项目时也一目了然,学习别人的设计思想更加容易

通过使用Construct 2独立完成了第一個游戏原型后,我学到了相似的游戏元素可以共享一部分属性(编程语言里使用类和继承的概念);学到了所有活动的游戏元素都需要在烸一帧的循环里进行驱动每帧只运动一小段距离;还学到了应该在主游戏循环的什么位置判断是否Game Over,以及Game Over时进入另一个循环来等待玩家偅新开始游戏等内容

我要回帖

更多关于 0基础自学编程 的文章

 

随机推荐