Ring 1.11 の変更履歴¶
Ring 1.11 公開版の新機能と変更点を学びます。
新機能と変更リスト¶
Ring 1.11 の新機能!
- 3Dサンプルの追加
- Checkers ゲーム
- Sokoban ゲーム
- Maze ゲーム
- Snake ゲーム
- Sudoku ゲーム
- デスクトップスクリーンショットアプリケーション
- 文書読み上げアプリケーション
- RingRayLib 拡張機能
- ZeroLib ライブラリ
- StdLib - 関数の追加
- RingQt の改良
- 実行性能の向上
- 取扱説明書の増補
- そのほかの改善
Checkers ゲーム¶
遊びかたは国際ルールですが、強制ジャンプを採用した Checkers の方言です。
無効な移動、無効なジャンプ、強制ジャンプを扱います。
正方形は錯誤を示すために色分けしています。
正方形は移動元と移動先、またはジャンプ先を示すために色分けしています。

Maze ゲーム¶
Maze ゲームを短時間で実装したものです。
2Dゲーム用 Ring ゲームエンジンを用いて開発しました (約100行のコード)
このゲームにはレベルデザイナーも搭載してあります (10分で開発、37行のコード)

デスクトップスクリーンショットアプリケーション¶

文書読み上げアプリケーション¶

RingRayLib 拡張機能¶
Ring 1.11 より RayLib ゲームプログラミングライブラリに対応した拡張機能があります。
用例:
load "raylib.ring"
screenWidth = 800
screenHeight = 450
InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window")
SetTargetFPS(60)
while !WindowShouldClose()
BeginDrawing()
ClearBackground(RED)
DrawText("Congrats! You created your first window!", 190, 200, 20, WHITE)
EndDrawing()
end
CloseWindow()
実行結果:

用例:
load "raylib.ring"
screenWidth = 800
screenHeight = 450
InitWindow(screenWidth, screenHeight, "raylib [shapes] example - basic shapes drawing")
SetTargetFPS(60)
while !WindowShouldClose()
BeginDrawing()
ClearBackground(RAYWHITE)
DrawText("some basic shapes available on raylib", 20, 20, 20, DARKGRAY)
DrawCircle(screenWidth/4, 120, 35, DARKBLUE)
DrawRectangle(screenWidth/4*2 - 60, 100, 120, 60, RED)
DrawRectangleLines(screenWidth/4*2 - 40, 320, 80, 60, ORANGE)
DrawRectangleGradientH(screenWidth/4*2 - 90, 170, 180, 130, MAROON, GOLD)
DrawTriangle(Vector2(screenWidth/4*3, 80),
Vector2(screenWidth/4*3 - 60, 150),
Vector2(screenWidth/4*3 + 60, 150), VIOLET)
DrawPoly(Vector2(screenWidth/4*3, 320), 6, 80, 0, BROWN)
DrawCircleGradient(screenWidth/4, 220, 60, GREEN, SKYBLUE)
DrawLine(18, 42, screenWidth - 18, 42, BLACK)
DrawCircleLines(screenWidth/4, 340, 80, DARKBLUE)
DrawTriangleLines(Vector2(screenWidth/4*3, 160),
Vector2(screenWidth/4*3 - 20, 230),
Vector2(screenWidth/4*3 + 20, 230), DARKBLUE)
EndDrawing()
end
CloseWindow()
実行結果:

ZeroLib ライブラリ¶
Ring 1.11 より添字 0 始点のリストと文字列用クラスである ZeroLib ライブラリがあります。
用例:
load "zerolib.ring"
? "Using List - Index start from 0"
List = Z( [1,2,3] )
List.Add(4)
List.Add(5)
? List[0]
? List[1]
? List[2]
? List[3]
? List[4]
nIndex = List.find(2)
? "Find(2) = " + nIndex
List.delete(0)
? "After deleting the first item : List[0]"
? "Now List[0] = " + List[0]
? "Using String - Index start from 0"
String = Z( "Welcome" )
? String[0]
? String[1]
? String[2]
? String[3]
? String[4]
? String[5]
? String[6]
実行結果:
Using List - Index start from 0
1
2
3
4
5
Find(2) = 1
After deleting the first item : List[0]
Now List[0] = 2
Using String - Index start from 0
W
e
l
c
o
m
e
StdLib - 関数の追加¶
次の関数を StdLib へ追加しました
- IsListContainsItems(aParent,aChild)
- IsBetween(nNumber,nMin,nMax)
- TimeInfo(cInformation)
用例:
load "stdlibcore.ring"
? "Using the IsListContainsItems() function"
aList1 = "a":"z"
aList2 = [:h,:l,:p,:u]
? IsListContainsItems(aList1,aList2)
? "Using the IsBetween() function"
? isBetween(1,3,4)
? isBetween(4,1,6)
? "Using the TimeInfo() function"
? timeInfo(:date)
? timeInfo(:year)
? timeInfo(:time)
? timeInfo(:hour_12)
実行結果:
Using the IsListContainsItems() function
1
Using the IsBetween() function
0
1
Using the TimeInfo() function
05/24/19
2019
15:30:33
03
前述の関数に関する詳細情報は StdLib 関数の章を参照してください。
RingQt の改良¶
Qt 5.12.3 を用いての RingQt のビルド
Android 用 RingQt - WebView モジュールの存在時に WebView をインクルードするためにプロジェクトファイルを更新
QString クラス - 新規メソッド
- compare()
- contains()
- indexOf()
- insert()
- isRightToLeft()
- remove()
- repeated()
- replace()
- startsWith()
- endsWith()
- toHtmlEscaped()
- clear()
- isnull()
- resize()
- fill()
QAxBase & QVariant - API の改善
RingQt へ下記のクラスを追加しました。
- QQuickView クラス
- QPrintDialog クラス
- QAxWidget2 クラス
- QTextToSpeech クラス
- QGraphicsView クラス
- QAbstractAspect クラス
- QNode クラス
- QEntity クラス
- QTransform クラス
- QAspectEngine クラス
- QTorusMesh クラス
- QConeMesh クラス
- QCylinderMesh クラス
- QCuboidMesh クラス
- QPlaneMesh クラス
- QSphereMesh クラス
- QPhongMaterial クラス
- QForwardRenderer クラス
- Qt3DWindow クラス
- QAbstractCameraController クラス
- QFirstPersonCameraController クラス
- QTextureMaterial クラス
- QExtrudedTextMesh クラス
- QText2DEntity クラス
- QSkyBoxEntity クラス
- QConeGeometry クラス
- QOrbitCameraController クラス
- QDiffuseSpecularMaterial クラス
- QGoochMaterial クラス
- QMetalroughMaterial クラス
- MorphPhongMaterial クラス
- QPervertexColorMaterial クラス
- QInputAspect クラス
- QFrameAction クラス
- QLogicAspect クラス
- QCamera クラス
- QCameraLens クラス
- QMesh クラス
- QTechnique クラス
- QMaterial クラス
- QEffect クラス
- QRenderPass クラス
- QSceneLoader クラス
- QPointLight クラス
- QRenderAspect クラス
- QTextureLoader クラス
- QObjectPicker クラス
- QCameraSelector クラス
- QCullFace クラス
- QDepthTest クラス
- QViewPort クラス
そのほかの改善¶
- 新規サンプル
- samples/other/ModuloTimesTableCircle フォルダ
- samples/other/saveimage folder
- samples/other/UsingQML folder
- samples/other/myguicontrol.ring
- samples/other/qcalendarwidget.ring
- samples/other/qcalendarwidget2.ring
- samples/other/sudoku-KL02.ring
- samples/other/sudoku-KL02-longproblem.ring
- samples/other/zerobasedlist.ring
- ringlibs/gameengine/lesson17.ring (ボタンの用法)
- samples/other/SQLTutorial/SQL-Tutorial.ring
- samples/other/DrawFourier/AA-Draw-Fourier.ring
- samples/other/SmartPhoneEmulator/ejemploKey.ring
- samples/other/DiscreteFourierTransform/DiscreteFourierTransform.ring
- samples/other/phonedatabase/PhoneDatabase.ring
Gold Magic 800 - レベルの追加 (44 レベル)
Fifteen Puzzle ゲーム 3D - コードの改善 (アニメーション速度)
Flappy Bird 3000 - ゲームオーバー時、時機 (鳥) を落下させる演出へ変更
Ring Notepad - 着脱可能ウィンドウ方式時のキーボード・ショートカット
Ring Notepad - 関数リストの表示時に “_” 文字がある関数を除外しなくなりました
Ring Notepad - 実行結果ウィンドウ - データの送信 - コードの改良
Ring Notepad - 検索と置換ウィンドウ - コードの改良
Ring Notepad - 編集メニュー - テキストの挿入ウィンドウ
Ring Notepad - 編集メニュー - 大文字と小文字オプション
Ring Notepad - 編集メニュー - 接頭字オプション
Ring Notepad - 編集メニュー - コメント行とコメントブロック行
Ring Notepad - ファイルタブ - コンテキストメニュー (ほかのファイルを閉じる、使用中のファイルを閉じる、すべてのファイルを閉じる)
RingPM - パッケージの更新 - 依存性の再インストールをしなくなりました
2Dゲーム用 Ring ゲームエンジン - 追加 : GE_FULLSCREEN, GE_SCREEN_W および GE_SCREEN_H
2Dゲーム用 Ring ゲームエンジン - 追加 : ゲームオブジェクトの name プロパティ
2Dゲーム用 Ring ゲームエンジン - 追加 : find() ゲームクラスのメソッド (名前によるオブジェクトの検索)
2Dゲーム用 Ring ゲームエンジン - oGame[:ObjectName] によるオブジェクトへのアクセスに対応
Natural ライブラリ - 実行性能の改良
FoxRing - 追加: frCTOD() 関数
拡張機能用のコード生成器 - 新規構造体によるマネージドポインタを用いた関数の生成
Ring VM - Ring オブジェクトファイルエラーに関するエラーコード
Ring VM - Eval() 関数 - コードの改良 (実行性能の改善)
Ring VM - ステート管理 - コードの改良
Ring VM - “>” 演算子と演算子オーバーロード - コードの改良
Ring VM - 代入とオブジェクトメソッドの呼び出し - コードの改良
Ring VM - オブジェクト指向プログラミング (OOP) - Getter、 メソッド - 実行性能の改善
Ring API - C 拡張機能での RING_API_ISLIST() の対応
Ring コンパイラ - 条件分岐の記述時に開業後の数値とリテラルに対応
Ring コンパイラ - 行の開始におけるセミコロン (;) へ対応
Ring コンパイラ - ループ外からの Loop と Exit 命令は使えなくなりました