KonsolScript

Ang **KonsolScript** ay isang open source na cross-platform scripting language na pangunahing inilalaan para sa, **ngunit hindi limitado sa**, pagsulat ng desktop 2D games.

Itong proyekto ay opisyal na sinimulan nang Nobyembre 2005 ni MJ Mendoza IV, isang information technology student mula sa Saint Mary's University sa Pilipinas.

Ang taglay na simplicidad ay nagbubunga upang maging kandidato bilang isang gamit sa pagtututo ng programming. Hindi gaya ng BASIC at Pascal, itong wika ay magtuturo ng programming gamit ang syntax ng C programming language. Sa kadahilanan na ang syntax ng KonsolScript ay nagmula sa ActionScript ng Adobe, na isang wikang na-impluwensiyahan ng C. Ang KonsolScript ay mayroon lamang sa Windows at GNU/Linux.

Ang script engine / interpreter KonsolScript, na tinatawag na Free KonsolScript Engine o FreeKE, ay isinulat sa Microsoft's Visual Basic 6. Ito ay hosted sa SourceForge.net.

Posible para sa KonsolScript ang humawak ng graphic files (gaya ng BMP, JPG at GIF), magmanipula ng text files, at mag-execute ng external files (gaya ng BAT, COM at EXE files). Ito ay maaari ring humawak ng WAV at Midi audio formats.

----
## KonsolScript Basics 
Gaya ng kanyang mga ninunong, C/C++, ang KonsolScript ay sensitibo sa pagkakasulat (case sensitive). Ang variable na "myVar" ay hindi pareho sa "myVAR".

### Script Engine 
Bilang isang scripting language, ang KonsolScript ay nangangailangan ng isang script engine upang gumana. Sa ngayon, mayroong dalawang pwedeng magamit mula sa KonsolScript Developers.
#### FreeKE 
*Free KonsolScript Engine* ay isinulat sa Microsoft Visual Basic 6, dahilang mga gumagamit lang ng Windows ang makakapagpatakbo ng FreeKE.

Gayon pa ma'y, ang FreeKE ay hindi makakatakbo sa isang bagong installed na Windows Vista sa kadahilana na ang DirectX7 DLL para sa VB6 (DX7VB.DLL) ay hindi kasama sa Vista. Isang solusyon ay ang pagkuha ng kopya ng DX7VB.DLL mula sa iyong Windows XP at saka i-rehistro mo gamit ang REGSVR32.EXE.

#### Project:Quixie 
Ang Project:Quixie ay isa pang script engine na sinimulan noong Setyembre 2007, na ang tanging mithiin ay ang maging script engine ng KS sa sistemang GNU/Linux. Ang Quixie ay isinusulat sa FreeBASIC. Ito ay makukuha sa bilang isang source code mula sa CVS at paunang release zip files.

Ang Quixie, binibigkas na "Quick-See", ay walang kinalaman sa MS QuickC. Ito ay nagkataon lang dahil sa pagbasa sa KWKSE, na ibig sabihin ay *Krixware KonsolScript Engine*.

### KS file 
Ang pangalawang bagay na kailangan mo ay isang *blangkong text file*. Itala ito sa **KAHIT_ANONG_PANGALANG_GUSTO_MO dot KS**. Buksan ang file, i-type ang halimbawang *Hello World* (sa baba)  at saka ito italang muli. Right-click mo ang file (gamit ng mouse) at saka piliin ang *Execute*.

Ang KS file ay isang KonsolScript Document. Dito mo dapat isulat ang iyong scripts (kodigo) at saka i-execute.

### Konfig. CFG file 
Ang pangatlo at hindi naman kinakailangang gawin ay isa pang blangkong text file. Itala ito sa pangalang **Konfig dot CFG**. Ito ay ang configuration file ng FreeKE. Gayon pa mang hindi ito hahanapin ng KonsolScript, ito lang ang natatanging paraan ng pag-set sa default script file ng FreeKE. (isinulat noong 3 Pebrero 2006 ay ang *Config.EXE*, isang GUI para sa Konfig.CFG file, nakasama sa opisyal na pamamahagi ng FreeKE)

## Disenyo ng Wika 
Ang disenyo para sa KonsolScript ay nabuo mula sa maraming magkakaibang kilalang wika tulad ng ActionScript, PHP, Java and C.
### Komento 
Ang abilidad ng pagkomento sa anumang programming/scripting language ay talaga namang kinakailangan. Sa pagku-komento, ang isang programmer ay maaring magtuloy ng isang iniwang trabaho kahit sa mahabang panahon. Iyan ang tngaing rason kung bakit ang manunulat ng KonsolScript ay nagbigay sa script ng abilidad sa pagkomento. Para magkomento sa script, in-adapt ng manunulat kung pano mag-komento sa C/C++, ito ay ang paggamit ng dalawang magkasunod na forward slash '**//**' para sa pagkomento sa iisang linya at forward slash sundan ng asterisk '**/***' para sa maramihang linyang pagkukomento at tatapusin ng asterisk-forward slash '***/**'.

```
//ito ay pagkomento sa iisang linya at hindi ito babasahin ng KonsolScript
  function main() {
    /*
      Kahit anuman ang nakasulat sa maramihang pagkukonmento ay
      hindi babasahin ng KonsolScript. Ito ang mabisang paraan
      sa pagkumento ng kung ano dapat ang mangyayari sa kodigo
      na nakasulat, kahit ito'y sa wikang C/C++, Java, atbp...
    */
  }
```

### Pinakamaiksing tatakbong KonsolScript 
Ang halimbawa sa ibaba ay ang pinakamaiksing script para sa KonsolScript upang tumakbo ng walang problema. Kung wala ito, ang KonsolScript ay paulit-ulit na maghahanap nito.

```
function main() {
  }
```

Ang salitang **function main()** ay ang pangunahing daanan ng KonsolScript, halintulad sa **main()** ng C/C++ , sa **public static void main(String[] args)** ng Java o sa **Sub Main()** ng Visual Basic . Ang *function main* ay ang nag-iisang kinakailangang function sa isang **".ks"** file, na *kinakailangan ding maging isang Void function at walang kahit anong parameter*.
### Kamusta Daigdig (nag-iisa) 
Ang kodigo sa ibaba ay hindi nangangailangan ng anumang header-file sa dahilang lahat ng kinakailangang mga utos upang makalikha ng isang programang "Kamusta Daigdig" ay naroroon na. Ito prograrama ay tatakbo ng walang problema at magpapakita ng isang window na may mensaheng nagsasabing, "Kamusta Daigdig".

```
function main() {
    Screen:Show()
    while(lastpress EQ nochar) {
      Screen:PrintString("Kamusta Daigdig")
      Screen:Render()
    }
  }
```

### Kamusta Daigdig (gumagamit ng header) 
And pinapamahaging KonsolScript ay sinamahan ng standard header na tinatawag na "console". Itong pangalawang halimbawa ng "Kamusta Daigdig" ay nagpapakitang-gilas ng kanyang gamit.

```
#include "console"
  function main() {
    write("Kamusta Daigdig")
    end()
  }
```

### Void Functions 
Lahat ng functions na hindi nagsasauli ng value ay tinatawag na *Void Functions*. Ang kodigo sa ibaba ay halimbawa ng KonsolScript na tumatawag sa isang gawang-user na void function.

```
function main() {
    UserDefinedFunc()
  }

  function UserDefinedFunc() {
    //kodigo...
  }
```

### Non-Void Functions 
Lahat ng functions na nagsasauli ng values na Number, String, Boolean ay tinawatag na *Non-Void Functions*. Ang dalawang kodigo sa ibaba ay halimbawa ng Non-Void functions. Basahin ang komento para sa inpormasyon sa kung anoman ang talangang nangyayari sa script.

;1. KonsolScript na tumatawag sa isang user-defined String function.

```
//aktwal na 8-linyang script na kayang tumakbo; kopyahin at itala bilang "main.ks" file
  function main() {                                               //L01:KonsolScript's entry point
    Var:String myPath;                                            //L02:magdedeklarang myPath bilang String
    GetPath(myPath)                                               //L03:tatawagin ang user-function na GetPath
    Konsol:Message ("Ito'y nakatala sa " + myPath + ".", "Subok") //L04:magpapakita ng mensahe
  }

  function GetPath():String {                                     //L06:gawang-user na function na walang parameter
    return path;                                                  //L07:magsasauli ng value ng direction (KonsolScript constant) sa tumawag
  }
```

*Tingnan ang Linyang #6 at Linyang #3*. Napuna ninyo ba na *walang parameter* na inilagay sa *function GetPath* pero ang *function main* ay tumawag sa GetPath at nag-abot ng *1 parameter?* Ito ay dahil sa ang sinuplay na parameter ay kung saan ilalagay ni GetPath function ang kanyang isasauling value ng **path**.

Kategorya:Wikang pang-script