วันอาทิตย์ที่ 22 สิงหาคม พ.ศ. 2553

ข้อแตกต่างระหว่าง JOGL และ LWJGL

หากจะกล่าวถึงข้อแตกต่างระหว่าง 2 Library นี้มันคงมีไม่ค่อยมากมายครับเพราะทั้ง 2 ต่างใช้ opengl เป็น api ทั้งนั้นลักษณะการเขียนจะคล้ายกัน

  1. Jogl (Java Open Graphics Library)เป็นชุดคำสั่งสำหรับพัฒนางาน 2 มิติ และ 3 มิติที่ต้องการความเร็วสูงและด้วยความสามารถที่ไม่ยึดติดกับ platform ของ java และ opengl จึงทำให้สามารถต่อยอดสู่เทคโนโลยีต่างๆได้เร็วขึ้น

  2. LWJGL (Lightweight Java Game Library)เป็นชุดคำสั่งสำหรับพัฒนาเกมด้วยจาวาโดยเฉพาะเนื่องจากรวมเอา ชุดคำสั่งสำหรับการพัฒนาเกมมาไว้ในตัวเช่น display , input , audio , render จึงทำให้เหมาะกับการพัฒนาเกมกล่าวได้ว่า lwjgl ก็คือชื่อทีนำเอา OpenGL , OpenAL และ  input library มาเก็บไว้อย่างเป็นหมวดหมู่

วันจันทร์ที่ 16 สิงหาคม พ.ศ. 2553

เรื่องของ Thread

Thread อ่านว่า เธรด หลายๆคนคงเคยได้ยินมันแต่ไม่รู้ว่ามันใช้ยังไงบทความนี้จะมาเล่าถึงเธรดกันก่อนว่ามันเป็นยังไงมันใช้ทำอะไร
    เราสามารถบอกได้ว่าเธรดคือหน่วยประมวลผลย่อยที่แยกออกมาจากโปรเซสอีกที(Light Wieght Process) ประโยชน์หลักๆของเธรดก็คือ เราสามารถแบ่งหน้าที่การทำงานได้หลายๆส่วน ขอยกตัวอย่างเป็นวอตำรวจ นะครับหลายๆคนคงจะรู้จัก สังเกตหน้าที่การทำงานระหว่าง วอ และ โทรศัพ นะครับทั้งๆที่เป็นอุปกรณ์ที่ใช้ในการสื่อสารเหมือนกันแต่ทำไมถูกสร้างออกมาคนละอย่างกันเลย การรับและส่งข้อมูลของวอก็คือรอจนกว่าอีกฝั่งจะพูดเ็ส็จเราถึงจะส่งข้อมูลกลับได้ ส่วนโทรศัพพูดแทรกขึ้นมายังได้เลย ตรงส่วนนี้เองครับที่เป็นประโยชน์ของเธรด สรุปง่ายๆคือเธรดเป็นส่วนที่สร้างขึ้นมาใหม่เพื่อตอบสนองไปยังโปรแกรมหรือยูเซอร์ได้เร็วขึ้น โดยทำให้เราไม่ต้องเสียเวลารอจนกว่าโปรแกรมจะทำงานเสร็จ และ ยังช่วยให้สามารถแชร์ทรัพยาการณ์ระหว่าง Process มายัง Thread ได้อีกด้วย จริงๆแล้วประโยชน์ของเธรดยังมีมากกว่านั้นนัครับ

เอาล่ะเรามาลองเขียนเธรดกันดีกว่า

class LWProcess extends Thread{
        public void run(){
                 int i = 0;
                 do{
                      System.out.println(i);
                      i = i+1;
                 }while(i<1000);
        }
}

ปกติเวลาเราเขียน thread สามารถทำได้หลายวิธีแต่ในบทความนี้จะพูดถึงการสืบทอด จากcodeตัวอย่าง นี้คือการสืบทอดคลาส Thread ครับ โดยเธรดจะเข้ามาทำงานที่ constructor ก่อนที่จะไปทำงานที่ run ในการเขียน thread แต่ละครั้งจะต้องทำการ override method ที่ชื่อ run ลงไปด้วยครับ

LWProcess aThread = new LWProcess();
aThread .start();

จากคำสั่งข้างต้นคือการสั่งให้ Thread ทำงาน

วันจันทร์ที่ 9 สิงหาคม พ.ศ. 2553

ข้อสอบ VB ก๊อปไปวางทับอันเก่าเด้อ

Public Class Form1


    Private Sub code_button1(ByVal num As Integer)

        Button1.Text = "ผลรวมของ 1 ถึง " + num.ToString()

        Dim ans As Integer = 0



        For i As Integer = 1 To num

            ans = ans + i

        Next



        Label3.Text = ans.ToString()



    End Sub



    Private Sub code_button2(ByVal num As Integer)

        Button2.Text = "ผลรวมเฉพาะเลขคี่ของ 1 ถึง " + num.ToString()

        Dim ans As Integer = 0





        For i As Integer = 1 To num

            If (i Mod 2) = 1 Then

                ans = ans + i

            End If

        Next



        Label4.Text = ans.ToString()

    End Sub



    Private Sub code_button3(ByVal num As Integer)

        Button3.Text = "ผลรวมเฉพาะเลขคู่ของ 1 ถึง " + num.ToString()

        Dim ans As Integer = 0



        For i As Integer = 1 To num

            If (i Mod 2) = 0 Then

                ans = ans + i

            End If

        Next



        Label5.Text = ans.ToString()

    End Sub



    Private Sub code_button4(ByVal num As Integer)

        Button4.Text = "!" + num.ToString() + " มีค่าเท่ากับ"

        Dim ans As Integer = factorial(num)



        Label6.Text = ans.ToString()

    End Sub

    Private Sub code_button5(ByVal num As Integer)

        Button5.Text = "หาผลรวมของเลขที่ หาร 3 ลงตัว ตั้งแต่ 1 ถึง " + num.ToString()
        Dim ans As Integer = 0

        For i As Integer = 1 To num
            If (i Mod 3) = 0 Then
                ans += i
            End If
        Next



        Label7.Text = ans.ToString()

    End Sub

    Private Function factorial(ByVal num As Integer) As Integer

        Dim ans As Integer = num



        If (ans <= 0) Then

            Return 1

        End If



        For i As Integer = 1 To num

            ans = ans * i

        Next



        Return (ans)

    End Function



    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        Dim application_number As Integer = 0



        If TextBox1.Text <> "" Then

            application_number = CInt(TextBox1.Text)



            If (application_number > 0) Then

                code_button1(application_number)

                code_button2(application_number)

                code_button3(application_number)

                code_button4(application_number)

                code_button5(application_number)

            End If

        End If

    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

    End Sub
End Class

วันเสาร์ที่ 24 กรกฎาคม พ.ศ. 2553

jMonkey Engine 3 Platform

ชอบๆ

เขียนเกม JAVA ฉบับเริ่มต้น (ตอน 1)

/*
เขียนเกม JAVA ฉบับเริ่มต้น

ก่อนอื่นจะมาแนะนำกันก่อนว่ามันต้องมีอะไรมั่ง
  - J2SE ( Java 2 Standard Environment ) ตามชื่อจ้า สภาพแวดล้อมพื้นฐานของ Java ที่ทำงานบน Personal Computer (PC) และเจ้า J2SE มันจะประกอบไปด้วย 2 อย่าง คือ
              - JDK (Java Development Kit)    ตัวนี้ ใช้ในการสั่งแปรภาษา จาวา ให้อยุ่ในรูปแบบของ Byte Code นำไปให้ JVM อ่านต่อไป
              - JRE (Java Runtime Environment)   ตัวนี้ ทำหน้าที่เรียกเอา Byte Code ที่อ่านจาก JVM ออกมาเป็น Output ให้เราได้เห็นๆกันอยู่ ( ว่าได้ว่า คือตัวเล่น Java Application )

  - Notepad  หวังว่าทุกคนคงจะรู้จัก Notepad ถ้าไม่รู้จัก กดที่ Start->Run->พิพม์["Notepad"]

ขั้นตอนต่อมาก็มาเขียน Code กัน ผมจะเริ่มจากตัวที่หาง่ายๆก่อนเลยนั่นคือ Java2D API ^^
*/


วันพฤหัสบดีที่ 22 กรกฎาคม พ.ศ. 2553