社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 道具中心
主题 : 编程语言nimrod:果然这个世界上总会有人爱好相同
shawind 离线
级别: 分版主
显示用户信息 
0  发表于: 2012-11-05   
来源于 通用编程 分类

编程语言nimrod:果然这个世界上总会有人爱好相同

http://nimrod-code.org
主要是仿制python,另外还有一些pascal的风格
总之没有了同样是先编译成c的,Genie必需glib库的麻烦,也不像Zimbu关键字大写,结尾单花括号的那么别扭。
主流c编译器nimrod都支持。可以直接用vc,这就砍掉了d语言只认omf格式的短腿。

虽然才0.9版本,库已经几乎比较全面了,像线程,容器,网络,xml&json支持,unicode,加密算法,redis数据库访问,数据库mysql,mongo,sqlite...,正则表达式,zip,ssl,winapi,x11,pcre,tre,cairo,sdl, opengl,gtk,iup,libcurl,libuv,openssl......
可惜,对游戏开发来说,应该还少了个openal。
只是对于nimrod,直接用工具转换下H文件就可以用c库了。所以openal,bass什么的也不是问题。
就连脚本语言,它都支持了3个lua,tcl和python。

已经开发有一个ide。
总的来说非常不错,可玩性相当的高。

在github上看到的一个例子,这代码写出来,那是绝对的漂亮。ps.只 是我个人的感觉:)
复制代码
  1. import glfw
  2. import opengl ## TODO: Maybe import opengl in glfw ?
  3. import strutils
  4. ## -------------------------------------------------------------------------------
  5. var
  6.     running : bool = true
  7.     frameCount: int = 0
  8.     lastTime: float = 0.0
  9.     lastFPSTime: float = 0.0
  10.     currentTime: float = 0.0
  11.     frameRate: int = 0
  12.     frameDelta: float = 0.0
  13.     x: float = 0.0
  14.     y: float = 0.0
  15.     vx: float = 200.0
  16.     vy: float = 200.0
  17.     windowW: int = 640
  18.     windowH: int = 480
  19. ## -------------------------------------------------------------------------------
  20. proc Initialize() =
  21.     
  22.     if Init() == 0:
  23.         write(stdout, "Could not initialize GLFW! \n")
  24.     if OpenWindow(windowW.cint, windowH.cint, 0, 0, 0, 0, 0, 0, GLFW_WINDOW) == 0:
  25.         Terminate()
  26.     
  27.     opengl.loadExtensions()
  28.     SwapInterval(1)
  29.     glClearColor(0.1,0.1,0.1,1.0)
  30.     glClearDepth(1.0)
  31.     glEnable(GL_BLEND)
  32.     glDisable(GL_LIGHTING)
  33.     glCullFace(GL_BACK)
  34.     glDisable(GL_DEPTH_TEST)
  35.     glViewport(0,0,windowW,windowH)
  36.     glMatrixMode(GL_PROJECTION)
  37.     glOrtho(0.0, float(windowW), float(windowH), 0.0, 0.0, 1.0)
  38.     lastTime = GetTime()
  39.     lastFPSTime = lastTime
  40. ## -------------------------------------------------------------------------------
  41. proc Update() =
  42.     
  43.     currentTime = GetTime()
  44.     frameDelta = currentTime - lastTime
  45.     lastTime = currentTime
  46.     if currentTime - lastFPSTime > 1.0:
  47.         frameRate = int(float(frameCount) / (currentTime - lastFPSTime))
  48.         SetWindowTitle("FPS: $1" % intToStr(frameRate))
  49.         
  50.         lastFPSTime = currentTime
  51.         frameCount = 0
  52.     frameCount += 1
  53.     x += vx * frameDelta
  54.     y += vy * frameDelta
  55.     var w = float(windowW)
  56.     var h = float(windowH)
  57.     if x > w - 100.0:
  58.         x = w - 100.0
  59.         vx *= -1.0
  60.     elif x < 0.0:
  61.         x = 0.0
  62.         vx *= -1.0
  63.     if y > h - 100.0:
  64.         y = h - 100.0
  65.         vy *= -1.0
  66.     elif y < 0.0:
  67.         y = 0.0
  68.         vy *= -1.0
  69. ## --------------------------------------------------------------------------------
  70. proc Render() =
  71.     
  72.     glClear(GL_COLOR_BUFFER_BIT)
  73.     glMatrixMode(GL_MODELVIEW)
  74.     glLoadIdentity()
  75.     glBegin(GL_QUADS)
  76.     glColor3f(0.9,0.2,0.49)
  77.     glVertex3f(x, y, 0.0)
  78.     glVertex3f(x + 100.0, y, 0.0)
  79.     glVertex3f(x + 100.0, y + 100.0, 0.0)
  80.     glVertex3f(x, y + 100.0, 0.0)
  81.     glEnd()
  82.     SwapBuffers()
  83. ## --------------------------------------------------------------------------------
  84. proc Run() =
  85.     
  86.     while running:
  87.     
  88.         Update()
  89.         Render()
  90.         running = GetKey(GLFW_KEY_ESC) == GLFW_RELEASE and
  91.                   GetWindowParam(GLFW_OPENED) == GL_TRUE
  92. ## ==============================================================================
  93. Initialize()
  94. Run()
  95. Terminate()
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
え~え~お!!!
shawind 离线
级别: 分版主
显示用户信息 
1  发表于: 2012-11-05   
另外还有一些有用的资源:

https://github.com/dom96/jester
模仿了ruby的微型网页开发框架sinatra的网页开发框架

https://github.com/Vladar4/nimgame
一个才0.3还没有完成的游戏框架,基于sdl

https://github.com/fowlmouth/nimrod-glfw
glfw的移植

https://github.com/fowlmouth/nimrod-sfml
sfml 2.0

https://github.com/fowlmouth/nimrod-chipmunk
2d物理引擎chipmunk

https://github.com/fowlmouth/nimlibs
assimp, devil 图像处理
bullet ode 3d物理引擎
clutter 3d加速的2.5d GUI库
ftgl opengl的渲染

https://github.com/fowlmouth/nimrod-enet
udp网络开发包 enet

https://github.com/apriori/nimCL
opencl




え~え~お!!!
secondsen 离线
级别: 总版主
显示用户信息 
2  发表于: 2012-11-05   
这。。。自己写个脚本??游戏开发??
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
拖后腿的人发勋章!
tamashii 离线
级别: ③业余
显示用户信息 
3  发表于: 2013-02-04   
我对这种编程语言不感兴趣,符号太复杂了 Orz
还是C/C++或者是C#这样的好。
最好能弄一个可以编写Native的C#
Tamashii是啥意思?
魂!
=======================
我真是败给C++的面向对象了啊……
描述
快速回复

认证码:

验证问题:
12-5=?,答案:7 正确答案:7
按"Ctrl+Enter"直接提交