Friday, October 30, 2020

Java Programming sinhala tutorial - Nested Loop & "break" & "continue" keyword - Part 16

Nested Loop & "break" & "continue" keyword

    Loop ගැන අපි කලින් ලිපියකින් කතා කලානේ. ඉතින් අද අපි කතා කරන්න යන්නේ nested loop ගැන. Loop එකක් තුල තවත් loop එකක් නිර්මාණය කිරීම nested loop ලෙස සරලවම කියන්න පුළුවන්. 

Using for loop


Using while loop

Keyword "break"

    Loop එකක් run වන විට "break" keyword එක execute වුවහොත් ඊට පසු loop එක run වීම අවසන් වේ. 


"break" vs "return"

    Loop එකක් තුල "break" keyword එක execute වු විට loop එක පමණක් run වීම අවසන් වේ. නමුත් "return" keyword එක execute වු විට method එක run වීම අවසන් වේ.

With return keyword

With break keyword

"break" with nested loop

    "break" keyword එක තිබෙන loop එකට පමණක් "break" keyword එක බලපායි. Nested loop එකෙහි inner loop එක තුල "break" keyword එක run වුවහොත් inner loop එක පමණක් terminate වේ.


"break" with label in nested loop

    Nested loop හි loop label කල හැක. "break" keyword එක සමග loop එකට අදාළ label එක සදහන් කිරීමෙන්  "break" keyword එක run වූ විට එම label එකට අදාළ loop එක terminate වේ.


Keyword "continue"

    "continue" keyword එක loop එකක් තුල run වූ පසු, loop body එකෙහි ඊට පසු පවතින command execute නොවේ. Loop එක දිගටම run වේ.


"continue" with nested loop

    "continue" keyword එක එය පවතින loop එකට පමණක් බලපායි.



"continue" with label in nested loop

    Nested loop එකක loop label කර ඇති අවස්ථාවක, "continue" keyword එක සමග loop එකට අදාළ label එක සදහන් කල හැක. එවිට "continue" keyword එක run වූ විට body එකෙහි ඊට පසු පවතින command execute නොවී label එකෙහි සදහන් loop එක run වේ.



තවත් Java ගැන ඉගෙන ගන්න ඊලග ලිපියෙන් හමුවෙමු.

- චමෝදි -

Saturday, October 24, 2020

Blender Sinhala Tutorial - View Ports

අපි ත්‍රිමාණ තලයක වැඩ කරන නිසා බොහෝ විට 3D window එකකට වඩා අවශ්‍ය වෙනවා . බොහෝ Rendering සහ Animations වැඩසටහන් විවිධ data representation  සමඟ multiple viewport සඳහා ඉඩ ලබා දෙනවා. බ්ලෙන්ඩර් software එකද එසේමයි.

මතක ද බ්ලෙන්ඩර් ආරම්භ වන්නේ 3D දර්ශන කවුළුවකින් බව? මේ පහතින් දක්වල තියෙන්නේ ඒ viewport එක.


මේ viewports අතර රේඛාව ඇදගෙන යාමෙන් මෙම ඕනෑම කවුළුවක ප්‍රමාණය වෙනස් කරන්න පුළුවන්. viewport එකක් බෙදීමට 3D View එකේ  ඉහළ දකුණු කෙළවරේ ඇති කුඩා ත්‍රිකෝණයට ඔබේ කර්සරය ගෙන යන්න. කර්සරය “+” බවට පත් වූ විට LMB සමඟ drag කරන්න.එවිට ඔබේ screen  එක viewports 2 කට වෙන් වේ. 

viewports එකට එකක් සම්බන්ධ වීම ද මේ ආකාරයම වේ. ත්රිකෝණය මත ක්ලික් කර ඔබ ඉවත් කිරීමට අවශ්ය viewport එක හරහා ඇදගෙන යන්න.

ඔබගේ windows ඔබට කැමති ප්‍රමාණයකට split කරන්න පුළුවන්. එත් windows 2 ක් සමඟ වැඩ කරන එක පහසු වෙයි කියල මට හිතෙනවා. ඒ වම් window එක top, front, side යන ප්‍රධාන views සදහා ද  දකුණු window එක කැමරා view එක සඳහා ද වශයෙන්.

objects ස්ථානගත කිරීමේදී අවම වශයෙන් views 2 ක් වත් තුළ කර්සරයේ පිහිටීම බලන්න ඕනේ.

view එකේ ඉහළ වම් කෙළවරේ view එකේ නම දර්ශනය වෙනවා.

Camera view - 0 key

Front view - 1 key

Right view - 3 key 

Top view - 7 key

User ortho - Orthographic view (free rotation)

Perspective view - Key 5. (Key 5 toggle between ortho and perspective view)

Back - CTRL + 1 key

Left - CTRL + 3 key

Bottom - CTRL + 7 key

මම හිතනවා අද ඔයාල viewports ගැන යමක් ඉගෙන ගන්න ඇති කියල. ඉතින් ආයෙත් පොස්ට් එකකින් හම්බ වෙමු.


LMB = Left mouse button


-Hasini Senanayaka-

Game Development-JMonkeyEngine - Part2

මං අද කරන්න යන්නේ  මගේ netbeans IDE එක jMonkeyEngine එකත් එක්ක වැඩ කරන්න setup කරගන්න

එක. අපි බලමු කොහොමද කරන්නේ කියල. ඉස්සෙල්ලම අපි download කර ගත්තු zip file එක unzip කරගන්න ඕනි.

එතකොට මෙන්න මේ ආකාරයෙන්  තමයි දිස් වෙන්නේ.

 දැන් ඒක පැත්තකින් තියලා  අපි  යමු netbeans IDE  දිහාවට.

මේ පහලින් තියෙන්නේ netbeans IDE  එක. අපි ඉස්සෙල්ලම  අලුත් project එකක් හදන්න ඕන.

File => new project  මගීන්  අලුත් project එකක් හදන්න පුළුවන්


Java Application තෝරන්න. 


මේ ආකාරයෙන් project එකට නමක් සහ save වන ලොකේෂන් එක ලබාදෙන්න


Project  එක create  උනාට පස්සේ  මේ  ආකාරයෙන්  බලාගන්න  පුළුවන්.  දැන් අපි jmonkey engine 

run කරන්න ඕන JAR File  ටික add  කරගන්න ඕන.  

ඒකට  ්‍රොජෙක්ට් එකේ LIbrary folder  එකමත right click  කරලා Add JAR/Folder select කරන්න.

 

ඊට පස්සේ  unzip කරගත්ත  folder එකේ lib එකට ගිහින්  ඒක ඇතුළෙ තියෙන  ඔක්කොම JAR ෆයිල් 

ටික select කරලා ඕපන් දෙන්න 


ඊට පස්සේ  project එක උඩ right click කරලා  project properties යන්න. 

ඒකෙ තියෙන run tab එකට යන්න. දැන් අපි run වෙන්න ඕන configuration ලබා දෙන්න ඕන. 


ඊට පස්සේ අපි අලුතෙන් පැකේජ් එකක්  හදා ගන්න  ඕනේ.


 

ඊට පස්සේ ඒ පැකේජ්  එකට   අලුත්  java class එකක්  එකතු  කර  ගන්න ඕන.


 එතකොට මෙන්න මේ ආකාරයෙන් තමයි  java class එක පේන්නේ.


දැන් මේ පහල code එක copy කරලා paste කරන්න.  මතක ඇතුව  මේ  code එකේ තියෙන  class name එක 

ඔයාගේ class name එක විදිහට  වෙනස්  කරන්න. 

package hello3D.test;


import com.jme3.app.SimpleApplication;

import com.jme3.material.Material;

import com.jme3.scene.Geometry;

import com.jme3.scene.shape.Box;

import com.jme3.math.ColorRGBA;


/** Sample 1 - how to get started with the most simple JME 3 application.

 * Display a blue 3D cube and view from all sides by

 * moving the mouse and pressing the WASD keys. */

public class HelloWorld extends SimpleApplication {


    public static void main(String[] args){

        HelloWorld app = new HelloWorld();

        app.start(); // start the game

    }


    @Override

    public void simpleInitApp() {

        Box b = new Box(1, 1, 1); // create cube shape

        Geometry geom = new Geometry("Box", b);  // create cube geometry from the shape

        Material mat = new Material(assetManager,

          "Common/MatDefs/Misc/Unshaded.j3md");  // create a simple material

        mat.setColor("Color", ColorRGBA.Blue);   // set color of material to blue

        geom.setMaterial(mat);                   // set the cube's material

        rootNode.attachChild(geom);              // make the cube appear in the scene

    }

}


දැන් ඔක්කොම හරි.  අපි දැන් අපේ project එක run කරල බලමු. 

Run කරද්දි මුලින්ම වෙන්න මේ වගේ screen එකක් එයි.  එක continue දෙන්න.


අපි ඇත්තටම මේ code  එකෙන් කරේ  නිල් පාට box එකක්  හදන එක.  අපි අනිත් 3d modeling software  ගත්තොත්

අපිට ඕනේ object drag and drop කරන්න පුළුවන්.  ඒත් මේකෙ ඒ හැම object එකක්ම හදන්න වෙන්නේ

කෝඩ් කරලා. 


සුදු පාටින් සදහන් කරලා තියෙන keys පාවිච්චි කරල  object එක rotate කරන්න පුළුවන්. 

මම ඊළඟ පෝස්ට් එකෙන්  code  එක explain කරන්නම්.


 ස්තුතියි


-Hasini Senanayaka-



Wednesday, October 21, 2020

Game Development-JMonkeyEngine - Part1

JMonkeyEngine යනු විශේෂයෙන් 3D game development සඳහා සාදන ලද game engine  එකක්. එය shader technology පුළුල් ලෙස භාවිතා  කරනවා. මෙම එන්ජිම භාවිතා කරමින් ඇන්ඩ්‍රොයිඩ් සහ ඩෙස්ක්ටොප් උපාංග සඳහා ත්‍රිමාණ ක්‍රීඩා  ලියන්න පුළුවන්. jMonkeyEngine එක Java වලින් ලියා ඇති අතර එහි default renderer ලෙස LWJGL භාවිතා  වනවා. ඒ වගේම මෙය OpenGL 2 සඳහා පූර්ණ සහය දක්වනු  ලබනවා.

මේ තියන්නේ jMonkey engine එක  පාවිච්චි කරලා හදපු ගේම් ටිකක්. පේනවා ඇතිනේ කොච්චර ලස්සනද කියලා.

 දැන් අපි බලමු කොහොමද jmonkey engine  එකෙන් වැඩ ගන්නේ කියලා.

JMonkeyEngine භාවිතා කිරීමට විවිධ ක්‍රම  තියෙනවා:

  • Download the SDK
  • Download the engine
  • Add the libraries to a build script
මේ පහලින් තියෙන්නේ SDK එක. එක design කරලා තියෙන්නේ Netbeans IDE එක වගේ. මේ ලින්ක් එකින් SDK එක බාගන්න පුළුවන්.


jMonkeyEngine එකට SDK එකම පාවිච්චි කරන්න ඕනේ කියලා නියමයක්  නැහැ. එසේම නිශ්චිත IDE එකක් හෝ නැහැ. ඔබට ජාවා පිළිබද සාමාන්‍ය දැනීමක් ඇත්නම් ඕනෑම IDE එකක් භාවිතා  කරන්න පුළුවන්. (eg:- Netbeans, Intellij).

ඔබ online dependencies භාවිතා කිරීමට කැමති නම්, ඔබට ඒවා jcenter වෙතින් ලබා ගත හැකිය. Intellij වැනි IDE භාවිතා කරන පරිශීලකයින් අතර online dependencies වඩාත් ජනප්‍රියයි.
repositories {
    jcenter()
}

dependencies {
    implementation "org.jmonkeyengine:jme3-core:3.3.2-stable"
    implementation "org.jmonkeyengine:jme3-desktop:3.3.2-stable"
    implementation "org.jmonkeyengine:jme3-lwjgl:3.3.2-stable" 
}

මං කලින් කිව්වා වගේ SDK  එක පාවිච්චි නොකර  තමන්ට කැමති IDE එකක්  පාවිච්චි කරන්න පුළුවන්.  එතකොට IDE  එකට අදාල Engine එක සහ එහි dependencies බාගත කරගන්න ඕන. මේවා ඔබේ ජාවා ව්‍යාපෘතියට වෙනත් library එක මෙන් ඇතුළත්  කරන්න පුළුවන්.  

මේ ලින්ක් එකින් Engine එක බාගන්න පුළුවන්.

https://github.com/jMonkeyEngine/jmonkeyengine/releases


 මේ පොස්ට් එකෙන් අපි JmonkeyEngine  සඳහා අවශ්‍ය වන tools  ටික ඩවුන්ලෝඩ් කරගත්තා නේ.  ඊළඟ  පෝස්ට් එකෙන්  බලමු කොහොමද setup  කරගන්නේ කියලා. 



-Hasini Senanayaka-

Tuesday, October 20, 2020

Java Programming sinhala tutorial - Switch - Part 15

Java Flow Control " Switch"

    Switch control එක, if ladder එකෙහි ක්‍රියාකාරිත්වයට සමාන වේ. Switch variable එක යම් අගයකට සමාන වූ විට සිදු විය යුතු කාර්යයන් ඊට අදාල case එක ඉදිරියෙන් පැවතිය යුතු වේ. Switch variable එක පවතින case label එකකටවත් සමාන නොවේ නම් default ඉදිරියෙන් ඇති command execute වේ. මෙහිදී case එකක command අවසානයේදී break; ලෙස command කල යුතු වේ. නැතහොත් එම case එක true වූ විට ඊට පහලින් ඇති case එකෙහි command ද ක්‍රියා කරයි.

with break keyword

without break keyword

Switch control එක, if ladder එකෙහි ක්‍රියාකාරිත්වයට සමාන වන අතරම ඒවායේ byte code ද සමාන වේ.

using if ladder

using switch

අපි දැන් බලමු switch control ගැන වැඩිපුර විස්තර ටිකක්.
 
  • switch control හි multi selection හැකියාව පවතී. එනම් එක් case එකක් true වූ විට ඊට පහලින් ඇති case 1 ක් හෝ කිහිපයක command ක්‍රියාත්මක වීමට සැලැස්විය හැක. ඒ සදහා අවශ්‍ය තැන්හි break keyword එක නොලිවිය යුතුය.


  • switch control හි case label සංඛ්‍යා අනුපිළිවෙලින් ලිවිය යුතු නොවේ.


  • switch control හි default case එක ලිවිම අත්‍යවශ්‍ය නොවේ.


  • switch control එකෙහි default keyword එක එහි scope එක තුල ඕනෑම තැනක ලිවිය හැක.


  • switch control එකෙහි එකම case label එක දෙවාරයක් භාවිතා කල නොහැක.


  • switch control එකෙහි case label අනිවාර්යෙන්ම literal විය යුතුය. Compiler ට case label එකෙහි value එකක් පවතින බවට තහවුරු විය යුතුය. Run time variable වල value වෙනස් කල හැකි නම් එවිට compiler error ලැබේ.


  • case label වල literals ලෙස byte, char, string, enum භාවිතා කල හැකි අතර float, double, boolean භාවිතා කල නොහැක.

තවත් Java ගැන ඉගෙන ගන්න ඊලග ලිපියෙන් හමුවෙමු.

- චමෝදි -

Thursday, October 15, 2020

Java Programming sinhala tutorial - Method Calling Stack - Part 14

Method Calling Stack

   පසුගිය ලිපියෙන් අපි method ගැන දැනගත්තා. අද අපි මේ method වල අපි declare කරන variable වලට memory ( මතකය ) allocate වෙන්නේ කොහොමද කියලා බලමු. 

     පරිගනකයක OS එක මගින් එහි ක්‍රියා කරන එක් එක් software එක වෙනුවෙන් RAM එකේ memory allocate කරයි. 


    ඒ අනුව Java program එකක් run කරන විට JVM එකට RAM එකෙන් memory space එකක් OS එක මගින් ලබා දෙයි. JVM එකෙන් program එක run කරන විට main method එක පළමුවෙන් run වේ. Program එකේ ඇති variable නිර්මාණය කිරීම සදහා JVM එකට ලබා දුන් memory space එකෙන් කොටසක් වෙන් කරයි. මෙම memory space එක variable stack ( Method Calling Stack ) එක ලෙස හදුන්වයි. Variable stack එක හැර JVM එක සදහා ලබා දී ඇති ඉතිරි memory space එක memory heap එක ලෙස හදුන්වයි. 

    Main method එකෙන් වෙනත් method එකකට call කල විට stack එකේ වෙනත් තැනක ඊට අදාළ variable නිර්මාණය වේ. එම method එක run වී අවසානයේදී එම method එක හා එහි variable මැකී යයි.



තවත් Java ගැන ඉගෙන ගන්න ඊලග ලිපියෙන් හමුවෙමු.

- චමෝදි -