Membuat Teks Berjalan ala Marquee 
Untuk membuat teks berjalan di halaman web kita, dapat digunakan tag MARQUEE. Berikut ini adalah penggunaan java script untuk menciptakan efek teks berjalan. biasanya sangat bermanfaat untuk news atau berita-berita penting lainnya. simpanlah barisan kode berikut ini ke dalam file dengan ekstensi .js

/***********************************
* http://javascripts.vbarsan.com/
* This notice may not be removed
***********************************/

//-- Begin Scroller's Parameters and messages -->
//scroller's width
var swidth=580;

//scroller's height
var sheight=20;

//scroller's speed
var sspeed=5;
var restart=sspeed;
var rspeed=sspeed;

//scroller's pause
var spause=0;

//scroller's background
var sbcolor="#ff0000";

//messages: change to your own; use as many as you'd like; set up Hyperlinks to URLs as you normally do: <a target=... href="... URL ...">..message..</a>
var singletext=new Array();
singletext[0]='<nobr><font face="Arial" size="2" color="#ffff00"><b>Untuk rekan travel agent di Jakarta, bisa menghubungi Mandira Abadi Bali Tangerang di nomer (021) 59493189</b></font></nobr>';
//singletext[...]='...';
//-- end Parameters and message -->

//-- begin: Scroller's Algorithm -->
var ii=0;var gekso=0;if(navigator.product&&navigator.product=="Gecko"){var agt = navigator.userAgent.toLowerCase();var rvStart = agt.indexOf('rv:');var rvEnd = agt.indexOf(')', rvStart);var check15 = agt.substring(rvStart+3, rvEnd);if(parseFloat(check15)<1.8) gekso=1;}var operbr=0; operbr=navigator.userAgent.toLowerCase().indexOf('opera');

function goup(){if(sspeed!=rspeed*16){sspeed=sspeed*2;restart=sspeed;}}

function godown(){if(sspeed>rspeed){sspeed=sspeed/2;restart=sspeed;}}

function start(){
if(document.getElementById){ns6div=document.getElementById('iens6div');
if(operbr!=-1)operdiv=document.getElementById('operaslider');
ns6div.style.left=swidth+"px";ns6div.innerHTML=singletext[0];
sizeup=ns6div.offsetWidth;
if(operbr!=-1&&sizeup==swidth){operdiv.innerHTML=singletext[0];
sizeup=operdiv.offsetWidth;}ns6scroll();}
else
if(document.layers)
{ns4layer=document.ns4div.document.ns4div1;
ns4layer.left=swidth;
ns4layer.document.write(singletext[0]);
ns4layer.document.close();sizeup=ns4layer.document.width;ns4scroll();}
else
if(document.all)
{iediv=iens6div;
iediv.style.pixelLeft=swidth+"px";
iediv.innerHTML=singletext[0];sizeup=iediv.offsetWidth;iescroll();}}

function iescroll()
{if(iediv.style.pixelLeft>0&&iediv.style.pixelLeft<=sspeed)
{iediv.style.pixelLeft=0;setTimeout("iescroll()",spause);}else
if(iediv.style.pixelLeft>=sizeup*-1)
{iediv.style.pixelLeft-=sspeed+"px";setTimeout("iescroll()",100);}
else{if(ii==singletext.length-1)ii=0;else ii++;iediv.style.pixelLeft=swidth+"px";
iediv.innerHTML=singletext[ii];sizeup=iediv.offsetWidth;iescroll();}}

function ns4scroll()
{if(ns4layer.left>0&&ns4layer.left<=sspeed)
{ns4layer.left=0;setTimeout("ns4scroll()",spause);}else
if(ns4layer.left>=sizeup*-1)
{ns4layer.left-=sspeed;setTimeout("ns4scroll()",100);}
else{if(ii==singletext.length-1)ii=0;else ii++;ns4layer.left=swidth;
ns4layer.document.write(singletext[ii]);
ns4layer.document.close();sizeup=ns4layer.document.width;ns4scroll();}}

function ns6scroll()
{if(parseInt(ns6div.style.left)>0&&parseInt(ns6div.style.left)<=sspeed)
{ns6div.style.left=0;setTimeout("ns6scroll()",spause);}else if(parseInt(ns6div.style.left)>=sizeup*-1)
{ns6div.style.left=parseInt(ns6div.style.left)-sspeed+"px";
setTimeout("ns6scroll()",100);}
else{if(ii==singletext.length-1)ii=0;else ii++;
ns6div.style.left=swidth+"px";
ns6div.innerHTML=singletext[ii];sizeup=ns6div.offsetWidth;
if(operbr!=-1&&sizeup==swidth)
{operdiv.innerHTML=singletext[ii];sizeup=operdiv.offsetWidth;}
ns6scroll();}}
//-- end Algorithm -->

lalu pada tag HEAD masukkan perintah berikut:
<script language="javascript" src="scroller_horizon.js"></script>

dan terakhir pada tag BODY, di tempat dimana tulisan akan dimunculkan, ketikkan kode berikut:

<script language="JavaScript">
document.write('<td width="'+swidth+'px">');
if(document.layers){document.write('<ilayer id="ns4div" width="'+swidth+'" height="'+sheight+'" bgcolor='+sbcolor+'><layer id="ns4div1" width="'+swidth+'" height="'+sheight+'" onmouseover="sspeed=0;" onmouseout="sspeed=restart"></layer></ilayer>')}
if(document.getElementById||document.all)
{document.write('<div style="position:relative;overflow:hidden;width:'
+swidth+'px;height:'+sheight+'px;clip:rect(0 '+swidth+'px '+sheight+'px 0);background-color:'+sbcolor+';" onmouseover="sspeed=0;" onmouseout="sspeed=restart">');if(gekso==0&&operbr==-1)document.write('<div id="iens6div" style="position:absolute;height:'+sheight+'px;"></div></div>');else
document.write('<div id="iens6div" style="position:relative;height:'+sheight+'px;"></div><div id="operaslider" style="position:absolute;visibility:hidden;"></div></div>');}
</script>


dan untuk tag BODY, function start harus sudah dipanggil
<BODY onLoad="start()">


[ add comment ] ( 339 views )   |  permalink  |   ( 0 / 0 )
Membuat Program Bel Sekolah dengan VB (Bag II) 
Program Bel Musik Sekolah ini terdiri dari 2 form dan 1 buah module. Pertama kita akan lihat modulnya terlebih dahulu

Option Explicit

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Public Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Public Const SND_ASYNC = &H1
Public Const SND_FILENAME = &H20000
Public Const SND_SYNC = &H0

Global Jam(15) As String
Global cn As New ADODB.Connection

Public Sub set_conn_getData(ByRef sConnection As ADODB.Connection, ByVal sDataLocation As String, ByVal sHavePassword As Boolean, ByVal sPassword As String)
If sHavePassword = True Then
sConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDataLocation & ";Persist Security Info=False;Jet OLEDB:Database Password=" & sPassword
Else
sConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDataLocation & ";Persist Security Info=False"
End If
End Sub

Public Sub set_rec_getData(ByRef sRecordset As ADODB.Recordset, ByRef sConnection As ADODB.Connection, ByVal sSQL As String)
With sRecordset
.CursorLocation = adUseClient
.Open sSQL, sConnection, adOpenKeyset, adLockOptimistic
End With
End Sub

Public Function SndPlay(ByVal filename As String, Optional ByVal options As Long = (SND_FILENAME Or SND_ASYNC)) As Long
SndPlay = sndPlaySound(filename, options)
End Function


kita akan menggunakan 2 buah fungsi API yaitu fungsi untuk memainkan file berformat WAV. Kemudian kita mendeklarasi dua buah Public Sub, yang gunanya untuk melakukan koneksi terhadap database dan yang satu lagi untuk mengeksekusi string query dari perintah SQL. Lalu sebuah public function digunakan untuk memainkan musik.

Berikutnya untuk form yang pertama, kita membutuhkan beberapa object yaitu:
4 buah object command button
Object timer
Beberapa object line untuk membuat tampilan jam digital

Langsung saja Programnya adalah sebagai berikut:

Private Sub Command1_Click()
Form2.Show
End Sub

Command1 berfungsi untuk memanggil form yang satu lagi

Private Sub Form_Load()
Dim i As Byte
'set your own bell time here...
'load the values from the database
Call set_conn_getData(cn, App.Path & "\bell.mdb", False, "")

Dim Rs As New ADODB.Recordset

'the program will terminate if the day is Saturday or Sunday
If Weekday(Date) = 1 Or Weekday(Date) = 7 Then
MsgBox "Sorry... this program is not working on Saturday or Sunday"
End
Else

'choose day
If Not Weekday(Date) = 6 Then
Call set_rec_getData(Rs, cn, "SELECT * FROM tblBell WHERE Jenis='Biasa'")
Else
Call set_rec_getData(Rs, cn, "SELECT * FROM tblBell WHERE Jenis='Jumat'")
End If

Rs.MoveFirst
Do While Not Rs.EOF = True
If Not Rs.EOF = True Then
Jam(0) = Rs.Fields(1)
Jam(1) = Rs.Fields(2)
Jam(2) = Rs.Fields(3)
Jam(3) = Rs.Fields(4)
Jam(4) = Rs.Fields(5)
Jam(5) = Rs.Fields(6)
Jam(6) = Rs.Fields(7)
Jam(7) = Rs.Fields(8)
Jam(8) = Rs.Fields(9)
Jam(9) = Rs.Fields(10)
Jam(10) = Rs.Fields(11)
End If
Rs.MoveNext
Loop

Set Rs = Nothing
End If
End Sub

Pertama-tama dilakukan pembacaan dari database dan pengecekan, jika hari Sabtu atau Minggu, program akan terminate dengan sendirinya. Asumsinya untuk Sabtu Minggu, sekolah tidak masuk, jadi apabila tidak ada rutin pengecekan ini, bel akan tetap berbunyi apabila komputer dinyalakan. Lalu akan ada pengecekan terhadap harinya, dengan asumsi bahwa jadwal bel untuk Senin - Kamis berbeda dengan jadwal hari Jumat. Selanjutnya, data dari field akan disimpan ke dalam sebuah variabel array sehingga kita bisa menutup koneksi ke database.

Private Sub Timer1_Timer()
Dim j As Byte
AmPm

If Format(Time$, "H:MM:SS AMPM") = Jam(0) Then
SndPlay "masuk.wav"
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(1) Then
SndPlay "ganti.wav"
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(2) Then
SndPlay "ganti.wav"
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(3) Then
SndPlay "ganti.wav"
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(4) Then
SndPlay "ganti.wav"
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(5) Then
SndPlay "ganti.wav"
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(6) Then
SndPlay "ganti.wav"
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(7) Then
SndPlay "ganti.wav"
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(8) Then
SndPlay "ganti.wav"
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(9) Then
If Not Weekday(Date) = 6 Then
SndPlay "ganti.wav"
Else
SndPlay "pulang.wav"
End If
End If
If Format(Time$, "H:MM:SS AMPM") = Jam(10) Then
If Not Weekday(Date) = 6 Then
SndPlay "pulang.wav"
End If
End If

For j = 1 To 6
Tim Mid(Format(Time, "HHMMSSAMPM"), j, 1), j - 1
Next j
End Sub

Lalu kita tambahkan rutin pengecekan pada object Timer. Sebagaimana kita ketahui, object Timer akan dieksekusi secara terus menerus. Jadi sederhana saja, kita tinggal membandingkan Timer dengan nilai array dari database, jika sama, maka akan dimainkan musiknya. Disamping itu kita juga akan mengganti tampilan digital dengan memanggil subrutin Tim.

Sub Tim(Wat, Id)
Select Case Wat
Case 0: LCD Id, , False
Case 1: LCD Id, False, False, False, False, False
Case 2: LCD Id, , , , False, , , False
Case 3: LCD Id, , , , False, False
Case 4: LCD Id, False, , False, , False
Case 5: LCD Id, , , , , False, False
Case 6: LCD Id, , , , , , False
Case 7: LCD Id, , False, False, False, False
Case 8: LCD Id
Case 9: LCD Id, , , , , False
End Select
End Sub

Subrutin Tim pada dasarnya pengecekan terhadap digit, yang nantinya akan di"gambar" oleh subrutin LCD dengan memanfaatkan variabel boolean, dimana nilainya diset TRUE apabila mau ditampilkan dan False apabila tidak ditampilkan

Sub LCD(ByVal i As Integer, Optional L1 As Boolean = True, Optional L2 As Boolean = True, Optional L3 As Boolean = True, Optional L4 As Boolean = True, Optional L5 As Boolean = True, Optional L6 As Boolean = True, Optional L7 As Boolean = True)
Up(i).Visible = L1
Midl(i).Visible = L2
Down(i).Visible = L3
Lft1(i).Visible = L4
Lft2(i).Visible = L5
Rgt1(i).Visible = L6
Rgt2(i).Visible = L7
End Sub

Sub AmPm()
If Right(Time, 2) = "PM" Then ARgt2.Visible = False Else ARgt2.Visible = True
End Sub

Private Sub Adj_Click()
Dat.Hour = Hour(Now)
Dat.Minute = Minute(Now)
Dat.Second = Second(Now)
Frame1.Visible = True
End Sub

Private Sub Pause_Click()
If Pause.Caption = "&Pause" Then Pause.Caption = "&Resume" Else Pause.Caption = "&Pause"
If OptAmPm.Value Then
If Timer1.Enabled Then Timer1.Enabled = False Else Timer1.Enabled = True
Else
If Timer2.Enabled Then Timer2.Enabled = False Else Timer2.Enabled = True
End If
End Sub

Private Sub Xit_Click()
End
End Sub

Private Sub OK_Click()
Can_Click
Time = Format(Dat.Value, "HH:MM:SS AMPM")
End Sub

Private Sub Can_Click()
Frame1.Visible = False
End Sub

Sebenarnya form ini adalah core atau inti dari program bel musik, sedangkan form yang satunya hanyalah form yang digunakan untuk mengupdate database dengan mengeset jam-jam pelajaran yang berlaku di sekolah. Dengan penggunaan database, tentunya program ini menjadi lebih fleksibel karena mudah dicustomize di sekolah mana saja, tidak dibatasi oleh jam yang sama.


[ add comment ] ( 74 views )   |  permalink  |   ( 0 / 0 )
Membuat Program Bel Sekolah dengan VB (Bag I) 
Jika dulu waktu kita masih di SMP/SMA, bel masuk sekolah ataupun istirahat masih berupa lonceng yang dipukul, ataupun bel elektronik yang harus dipencet, sekarang bel sekolah sudah bisa diautomatisasi dengan komputer. Dalam kesempatan ini, kita akan mencoba membuat program bel musik sekolah dari Visual Basic. Untuk tampilan awal programnya adalah sebagai berikut:



jadi dalam keadaan running, kita akan memanfaatkan object timer dari VB untuk mengecek atau memeriksa waktu yang ada. Jika sama dengan waktu yang sudah didefinisikan sebelumnya, maka program akan memainkan musik, yang jika disambungkan ke amplifyer dan speaker, akan berbunyi ke seluruh lingkungan sekolah.
Untuk definisi waktu ganti jam pelajaran, jam masuk ataupun jam pulang, dianjurkan menyimpan data-datanya ke dalam database agar mudah dicustomisasi. hal ini sangat penting dilakukan karena musik yang digunakan sebagai pertanda masuk, ganti jam, istirahat ataupun jam pulang bisa jadi adalah musik yang berbeda. Jika kita perhatikan, menu utama program ini ada empat tombol, yaitu:
1. Pause - untuk menghentikan program sementara
2. Time Schedule - untuk mengubah nilai jam yang tersimpan di dalam database
3. Adjustment - untuk mengubah jam
4. Exit - keluar program

untuk time schedule, akan menampilkan tampilan sebagai berikut:



jika kita perhatikan, ada perbedaan jam antara hari biasa dan jumat, dimana hari jumat siswa akan pulang lebih awal. Untuk kasus-kasus tertentu, program dapat dengan mudah dicustomisasi, yang nantinya akan dicek harinya, dan akan mengikuti jadwal hari yang bersesuaian.
Sedangkan untuk adjustment, kita akan dapat mengubah jamnya jika tidak cocok atau perlu diubah.



by: Wahyu Kurniawan

[ add comment ] ( 200 views )   |  permalink  |   ( 3.5 / 28 )
Solusi: SQL Server does not exist or access denied 
Anda programmer VB? Pastilah anda familiar dengan MS SQL Server sebagai database untuk program aplikasi anda. Untuk keperluan multi user, MS SQL dapat digunakan sebagai salah satu alternatif database.
Sayangnya, dalam beberapa kasus, saya menjumpai bahwa ada terminal yang tidak dapat melakukan koneksi dengan SQL Server. ERROR yang keluar adalah "SQL Server does not exist or access denied"
Ini bisa jadi adalah sebuah bug di MS SQL yang dikenal dengan SQL Slammer Worm.
Sewaktu searching di internet ternyata banyak juga yang mengalami hal yang sama. Solusinya ternyata sederhana, buka website Microsoft.com dan download SQL Critical Update (SQLCritUpdPkg_ENU.exe). Ini semacam patch untuk memproteksi kita dari SQL Slammer Worm. Download filenya disini http://www.microsoft.com/downloads/deta ... laylang=en

[ add comment ] ( 134 views )   |  permalink  |   ( 0 / 0 )
Capture Sprite dari Game (Bag III) 
Akhirnya kita dapat sprite yang bisa kita pakai dan kita gunakan dalam program kita. Dengan cara yang sama, kita dapat mengambil object2 untuk sprite kita dari bermacam2 source. Sebagai percobaan saya mengambil beberapa sprite Marle… temennya si Chrono dalam game Chrono
Trigger. Berikut programnya:

‘Load Gambar Marle
‘Taken from CHRONO TRIGGER

CLEAR
DEFINT A-Z

CONST Path$ = “”

‘11 x 32
OPEN Path$ + “Marle1.shp” FOR INPUT AS #1
DIM SHARED Marle1(200): FOR i = 0 TO 200: INPUT #1, Marle1(i): NEXT: CLOSE #1
‘40 x 11
OPEN Path$ + “Marle2.shp” FOR INPUT AS #1
DIM SHARED Marle2(248): FOR i = 0 TO 248: INPUT #1, Marle2(i): NEXT: CLOSE #1
‘14 x 24
OPEN Path$ + “Marle3.shp” FOR INPUT AS #1
DIM SHARED Marle3(189): FOR i = 0 TO 189: INPUT #1, Marle3(i): NEXT: CLOSE #1
‘20 x 24
OPEN Path$ + “Marle4.shp” FOR INPUT AS #1
DIM SHARED Marle4(264): FOR i = 0 TO 264: INPUT #1, Marle4(i): NEXT: CLOSE #1
‘10 x 31
OPEN Path$ + “Marle5.shp” FOR INPUT AS #1
DIM SHARED Marle5(178): FOR i = 0 TO 178: INPUT #1, Marle5(i): NEXT: CLOSE #1
‘15 x 28
OPEN Path$ + “Marle6.shp” FOR INPUT AS #1
DIM SHARED Marle6(234): FOR i = 0 TO 234: INPUT #1, Marle6(i): NEXT: CLOSE #1
‘14 x 31
OPEN Path$ + “Marle7.shp” FOR INPUT AS #1
DIM SHARED Marle7(242): FOR i = 0 TO 242: INPUT #1, Marle7(i): NEXT: CLOSE #1
‘14 x 31
OPEN Path$ + “Marle8.shp” FOR INPUT AS #1
DIM SHARED Marle8(242): FOR i = 0 TO 242: INPUT #1, Marle8(i): NEXT: CLOSE #1
‘18 x 22
OPEN Path$ + “Marle9.shp” FOR INPUT AS #1
DIM SHARED Marle9(220): FOR i = 0 TO 220: INPUT #1, Marle9(i): NEXT: CLOSE #1
‘17 x 27
OPEN Path$ + “Marle10.shp” FOR INPUT AS #1
DIM SHARED Marle10(254): FOR i = 0 TO 254: INPUT #1, Marle10(i): NEXT: CLOSE #1

‘15 x 32
OPEN Path$ + “Marler.shp” FOR INPUT AS #1
DIM SHARED marler(266): FOR i = 0 TO 266: INPUT #1, marler(i): NEXT: CLOSE #1
‘17 x 32
OPEN Path$ + “Marler1.shp” FOR INPUT AS #1
DIM SHARED marler1(299): FOR i = 0 TO 299: INPUT #1, marler1(i): NEXT: CLOSE #1
‘18 x 30
OPEN Path$ + “Marler2.shp” FOR INPUT AS #1
DIM SHARED marler2(296): FOR i = 0 TO 296: INPUT #1, marler2(i): NEXT: CLOSE #1
‘18 x 32
OPEN Path$ + “Marler3.shp” FOR INPUT AS #1
DIM SHARED marler3(315): FOR i = 0 TO 315: INPUT #1, marler3(i): NEXT: CLOSE #1
‘17 x 32
OPEN Path$ + “Marler4.shp” FOR INPUT AS #1
DIM SHARED marler4(299): FOR i = 0 TO 299: INPUT #1, marler4(i): NEXT: CLOSE #1
‘18 x 31
OPEN Path$ + “Marler5.shp” FOR INPUT AS #1
DIM SHARED marler5(306): FOR i = 0 TO 306: INPUT #1, marler5(i): NEXT: CLOSE #1
‘19 x 32
OPEN Path$ + “Marler6.shp” FOR INPUT AS #1
DIM SHARED marler6(332): FOR i = 0 TO 332: INPUT #1, marler6(i): NEXT: CLOSE #1

SCREEN 13
CLS
PUT (10, 30), Marle2
PUT (55, 17), Marle3
PUT (75, 17), Marle4
PUT (100, 13), Marle6
PUT (120, 9), Marle1
PUT (140, 10), Marle5
PUT (160, 10), Marle7
PUT (180, 10), Marle8
PUT (200, 19), Marle9
PUT (220, 10), Marle10

PUT (10, 50), marler
PUT (30, 50), marler1
PUT (50, 50), marler2
PUT (70, 50), marler3
PUT (90, 50), marler4
PUT (110, 50), marler5
PUT (130, 50), marler6

a$ = INPUT$(1)
‘ Buat Animasi Marle meloncat-loncat
CLS
DO
PUT (150, 29), Marle9
FOR j = 1 TO 1000: FOR k = 1 TO 6000: NEXT: NEXT
PUT (150, 29), Marle9
PUT (160, 10), Marle10
FOR j = 1 TO 1000: FOR k = 1 TO 6000: NEXT: NEXT
PUT (160, 10), Marle10
LOOP UNTIL INKEY$ = CHR$(13)

‘Animasi berjalan

x.pos = 10: y.pos = 50
x.old = x.pos: y.old = y.pos
x.ofset = 4: y.ofset = 4
delay = 1800

PUT (x.pos, y.pos), marler

main:
a$ = INKEY$
IF a$ = “” THEN GOTO main
IF LEN(a$) <> 2 THEN GOSUB not.arrow
keyb = ASC(RIGHT$(a$, 1))
‘IF keyb = 72 THEN GOSUB atas
‘IF keyb = 75 THEN GOSUB kiri
IF keyb = 77 THEN GOSUB kanan
‘IF keyb = 80 THEN GOSUB bawah

‘clean the keyboard buffer before go back to main loop
DEF SEG = &H40
POKE &H1A, PEEK(&H1C)

GOTO main

kanan:
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler
x.pos = x.pos + x.ofset
‘letakkan di posisi baru
PUT (x.pos, y.pos), marler1
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler1
x.pos = x.pos + x.ofset
‘letakkan di posisi baru
PUT (x.pos, y.pos), marler2
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler2
x.pos = x.pos + x.ofset
‘letakkan di posisi baru
PUT (x.pos, y.pos), marler3
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler3
x.pos = x.pos + x.ofset
‘letakkan di posisi baru
PUT (x.pos, y.pos), marler4
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler4
x.pos = x.pos + x.ofset
‘letakkan di posisi baru
PUT (x.pos, y.pos), marler5
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler5
x.pos = x.pos + x.ofset
‘letakkan di posisi baru
PUT (x.pos, y.pos), marler6
FOR z = 1 TO delay: FOR y = 1 TO delay: NEXT: NEXT
‘hapus spritenya
oldx.pos = x.pos: oldy.pos = y.pos
PUT (oldx.pos, oldy.pos), marler6
x.pos = x.pos + x.ofset
‘letakkan di posisi baru
PUT (x.pos, y.pos), marler
‘RETURN

not.arrow:
‘Jika ditekan tombol q maka program akan berhenti
IF a$ = “q” THEN
WIDTH 80
SCREEN 0
COLOR 7, 0
CLS
END
END IF
RETURN


Pada scene pertama, saya hanya meletakkan semua sprite secara statis, istilahnya diPUT aja, tanpa animasi. Lalu scene berikutnya, saya gambarkan animasi Marle meloncat2, sprite ini saya dapatkan sewaktu Marle menang melawan musuh2nya.
Sekarang bagian animasi berjalannya… kalo diperhatikan satu kali dia berjalan, terdiri dari 6 buah sprite.semakin banyak sprite
untuk sebuah gerakan, maka gerakannya akan keliatan bagus dan asli, kalo di game rosetta, saya hanya menggunakan 2 buah sprite, itupun sprite yang sama, hanya kakinya aja yang letaknya berbeda. jadi kurang bagus …
Penggunaan INKEY$ sebagai fungsi pembacaan keyboard tidak direkomendasikan oleh pakar2nya game, tapi saya rasa saya akan coba memakai INKEY$. Nah, sekarang yang jadi masalah neh… pada saat kita menekan tombol kanan, program akan lari ke subrutin memPUT sprite sebanyak 6 buah. Jika user menekan tombol kanan terus menerus, hal ini akan mengakibatkan keyboard buffer penuh, sehingga hasil animasi tidak akan sesuai dengan yang diharapkan user, yaitu pada saat user sudah
melepas tombol, sprite akan tetap berjalan. kenapa bisa gitu? karena pada saat itu, masih ada sisa instruksi yang disimpan di buffer keyboard. trus caranya gimana? pemikiran saya gini… kita harus memberikan perintah untuk mengosongkan buffer keyboard pada saat kembali ke looping utama. Dan ternyata bisa dilakukan dengan memberikan perintah ini;
DEF SEG = &H40
POKE &H1A, PEEK(&H1C)
Lega deh… akhirnya ketemu solusinya, walaupun ngga bagus2 amat, tapi lumayanlah. untuk mengaplikasikan animasi ini untuk deteksi tubrukan, mungkin akan timbul masalah baru dengan pembersihan keyboard buffernya…

[ add comment ] ( 58 views )   |  permalink  |   ( 0 / 0 )

<<First <Back | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | Next> Last>>