Uutiset:

Genetic Point BBS Powered by Amiga
g-point.tunk.org port:1024 tai 500

Main Menu

2013 ohjelmointi kisa

Aloittaja virgo, toukokuu 13, 2013, 11:09

« edellinen - seuraava »

escape

#15
Voisi kai tänne oman suorituksen postittaa, kun tuli jotain aikoinaan väkerrettyä. Opintojen parissa tosin sen verran kiireitä ettei ole liiemmin ehtinyt ohjelmointiin perehtyä. En tosin tuosta Amigasta ole kiinnostunut, kun niitä jo yksi nurkassa pyörii  ;D . Miettinyt senkin myymistä pois, mutta en taida raahtia. Tämä ei kyllä ole mitenkään täydellinen suoritus, mutta oppimismielessä postitan. Jos sitten joku jossain vaiheessa postittaisi jonkinnäköisen mallisuorituksen.


1 PRINT CHR$(147)
10 POKE 2040,13
20 FOR I=0 TO 62:READ A:POKE 832+I,A:NEXT I
30 POKE 53287,1
40 POKE 53269,1
41 P=3.141592654
44 FOR B=0 TO 360
50 POKE 53248,COS(B*P/180)*70+160
60 POKE 53249,SIN(B*P/180)*70+150
61 NEXT B
62 GOTO 44
70 POKE 53264,0
200 DATA0,0,0
210 DATA0,0,0
220 DATA0,0,0
230 DATA0,0,0
240 DATA0,0,0
250 DATA0,0,0
260 DATA0,0,0
270 DATA0,0,0
280 DATA0,0,0
290 DATA0,0,0
300 DATA0,1,0
310 DATA0,0,0
320 DATA0,0,0
330 DATA0,0,0
340 DATA0,0,0
350 DATA0,0,0
360 DATA0,0,0
370 DATA0,0,0
380 DATA0,0,0
390 DATA0,0,0
400 DATA0,0,0


edit. ohjelma lisätty liitteeseen

rams

#16
Räpelsin tämmösen viime yönä. Erikoisuutena on max. 3 spriteä ja mahdollisuus kiertosuunnan muutokseen (muuttujalla). Kauheahan tuo on. Teen assemblerilla uudelleen .. jos jaksan. ;)

(Testattu vicellä, näemmä pari then avainsanaa puuttuu tuolta, mutta "works on my machine", niin kuin sanotaan.  ;))

EDIT: lisäsin prg tiedoston. Muuten, nuo neliöt menee y-akselilla noin ylös, että pystyy testaamaan x-akselin ylivuotoa (x > 255).


1 print chr$(147)
2 ss = 2 : rem number of sprites (1-3), 3 is too much
5 rem fill in the sprite data, vic = 53248
6 poke 53280,0: poke 53281,0
10 for j = 832 to 894
20 read a
21 poke j,a
30 next
40 poke 2040,13 : rem sprite 0 data
45 poke 2041,13 : rem sprite 1 data, same as sprite 0
46 poke 2042,13 : rem sprite 2 data, same as sprite 0
50 poke 53287,1 : rem sprite 0 color
55 poke 53288,1 : rem sprite 1 color
56 poke 53289,1 : rem sprite 2 color
60 poke 53269,7 : rem sprite 0,  1, 2 in use
80 pi = 3.14159
90 vcenter = 139 : hcenter = 172
100 ml = 100
110 al = ml : aa = 0 : av = (-0.08)
120 bl = ml : ba = pi : bv = 0.08
130 cl = 10 : ca = 0: cv = (-1.5)
140 angle = 0
150 ll = 0 : spaddr = 0
480 rem =======================================
485 rem      set up sprites for move
490 rem =======================================
500 ll = al : angle = aa : vel = av
505 spaddr = 53248 : obit = 1
510 gosub 700
520 aa = angle
525 if(ss < 2 ) goto 500
550 ll = bl : angle = ba : vel = bv
555 spaddr = 53250 : obit = 2
560 gosub 700
570 ba = angle
575 if(ss < 3 ) goto 500
580 ll = cl : angle = ca : vel = cv
590 spaddr = 53252 : obit = 4
600 gosub 700
610 ca = angle
620 goto 500
680 rem =========================================
685 rem         move sprite
690 rem =========================================
700 if angle > 2*pi then angle = 0
720 x = ll * cos(angle) + hcenter
740 y = ll * sin(angle) + vcenter
760 ovf = ( x > 255 )
780 poke spaddr, x + (ovf * 255)
800 rem ovf = ovf * ( -1 )
820 if ovf <> 0 then poke 53264, peek(53264) or obit
840 if ovf = 0 then poke 53264, peek(53264) and not(obit)
790 poke spaddr+1,y
800 angle = angle + vel
820 return
5000 data 255,255,255
5010 data 128,0,1
5020 data 191,255,253
5030 data 160,0,5
5040 data 160,0,5
5050 data 167,255,229
5060 data 164,0,37
5070 data 164,0,37
5080 data 164,0,37
5090 data 164,126,37
5100 data 164,66,37
5110 data 164,126,37
5120 data 164,0,37
5130 data 164,0,37
5140 data 164,0,37
5150 data 167,255,229
5160 data 160,0,5
5170 data 160,0,5
5180 data 191,255,253
5190 data 128,0,1
5200 data 255,255,255

virgo

dodiin hyvältä näyttää vieläkun Editillä laitatte .PRG fileen mukaan et porukka pääsee testaan ohjelmianne ;D
:worship:

voidaan tehdä sitten äänestys siitä kuka saa koneen ?
toivon edelleen osallistujia lisää pää asiahan ei ole olla profesionaali vaan se jolla on eniten yritystä xD
no porukka sen lopulta päättää kelle kone lähtee 8 päivän päästä !
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

rams

Höh. Minun piti tehdä tänne vielä toinen versio Forth:lla (jolla en ole koskaan vielä ohjelmoinut), mutta en taida millään ehtiä etsimään ja toteuttamaan sinin ja kosinin vastinetta kokonaisluvuilla. Löytämäni Forth+ kun ei tue liukulukuja.

Suosittelen kuitenkin lämpimästi Forth:n kokeilua, jos C64:lla aiotte ohjelmoida. Nopeus on ihan eri luokkaa kuin Basicilla ja luettavuus on - pienen harjoittelun jälkeen - parempaa kuin assemblerilla. Lisäksi Forth:lla voi tehdä myös assemblerilla alirutiineita suoraan, joten kyseessä on aika mukavasti korkeamman ja matalemman tason yhdistävä kieli. Forth+:ssa ainakin on myös valmiina spritejen ja tarkkuusgrafiikan käsittelykäskyt.


virgo

jeeh hoo hetki lähenee kuka saa koneen  :thumbup:

ihmetyttää tosin ettei kukaan ole kiinnostunut testaamaan ja näkemään miten nuo ohjelmat toimivat  :o
ensimmäistä ladattu 0 kertaa ja toista 1 kerran :( !!
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

escape

Tehtävä oli ilmeisesti niin haastava, ettei kukaan uskalla edes testata ohjelmia  ;).

rams

Parantelin edellistä basic versiota hieman ihan huvikseni. Tällä kertaa sin ja cos arvot lasketaan edeltäkäsin taulukoihin, jolloin spritejen liikuttelu on noileempaa. 


2 ss = 3 : rem number of sprites (1-3)
3 dim px(180) : dim py(180)
5 rem fill in the sprite data, vic = 53248
6 poke 53280,0: poke 53281,0
10 for j = 832 to 894
20 read a
21 poke j,a
30 next
40 poke 2040,13 : rem sprite 0 data
45 poke 2041,13 : rem sprite 1 data, same as sprite 0
46 poke 2042,13 : rem sprite 2 data, same as sprite 0
50 poke 53287,1 : rem sprite 0 color
55 poke 53288,1 : rem sprite 1 color
56 poke 53289,1 : rem sprite 1 color
60 poke 53269,7 : rem sprite 0,  1, 2 in use
70 pi = 3.14159
80 vcenter = 139 : hcenter = 172
90 print chr$(147) : print "{12 down} {10 right}please wait{1 down} {12 left}"; 
100 rem =================================
101 rem  precalculate sin and cos values
103 rem =================================
110 tt = 0.0 : cnt = 0 : ocn = 0
120 for j = 0 to 180
123 ocn = cnt
124 cnt = int(j/18)
125 if ocn <> cnt then print chr$(161);
130 tt = j*2*pi/180
140 px(j) = cos(tt)
150 py(j) = sin(tt)
160 next j
170 print chr$(147)
400 rem =======================================
400 rem      set up sprites for move
410 rem =======================================
420 a1 = 0 : a2 = 180 : a3 = 0 : rem sprite 1,2 and 3 angles
430 l1 = 110 : l2 = 70 : l3 = 30 : rem sprite 1, 2 and 3 distance from center
500 ll = l1 : angle = a1 
505 spaddr = 53248 : obit = 1
510 gosub 700
520 a1 = a1 + 1
525 if ss = 1 then goto 590
530 ll = l2 : angle = a2
535 spaddr = 53250 : obit = 2
540 gosub 700
550 a2 = a2 - 1
555 if ss = 2 then goto 590
560 ll = l3 : angle = a3
565 spaddr = 53252 : obit = 4
570 gosub 700
580 a3 = a3 + 5
590 if a1 >= 180 then a1 = 0
591 if a2 < 0 then a2 = 180
592 if a3 >= 180 then a3 = 0
600 goto 500
680 rem =========================================
685 rem         move sprite
690 rem =========================================
700 x = int(px(angle) * ll + hcenter)
740 y = int(py(angle) * ll + vcenter)
760 ovf = ( x > 255 )
780 poke spaddr, x + (ovf * 255)
800 rem ovf = ovf * ( -1 )
820 if ovf <> 0 then poke 53264, peek(53264) or obit
840 if ovf = 0 then poke 53264, peek(53264) and not(obit)
790 poke spaddr+1,y
820 return
5000 data 255,255,255
5010 data 128,0,1
5020 data 191,255,253
5030 data 160,0,5
5040 data 160,0,5
5050 data 167,255,229
5060 data 164,0,37
5070 data 164,0,37
5080 data 164,0,37
5090 data 164,126,37
5100 data 164,66,37
5110 data 164,126,37
5120 data 164,0,37
5130 data 164,0,37
5140 data 164,0,37
5150 data 167,255,229
5160 data 160,0,5
5170 data 160,0,5
5180 data 191,255,253
5190 data 128,0,1
5200 data 255,255,255

virgo

#22
Rams  :thumbup: on sitten ilmeisesti tämä kilpailun voittaja koska toinen ei halunnut Amigaa itselleen ?!?
osoitetta kehiin niin saadaan paketti liikkeelle !

anteeksi lievähkö myöhästyminen voittajan ilmoittamisen suhteen mutta B5 maratoni on täysin sekoittanut
tämän universumin olemassa olon Anteeksi ;)

edit: Typo
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

rams

B5 toki menee aina kaiken muun edelle. Voin tulla hakemaan koneen jossain vaiheessa, kun kerran ollaan samassa pitäjässä.


virgo

#24
tervetuloa  8)

säästyy pakkaus ja postituskulut  :thumbup:
laitoin privaviestin jatko toimenpiteitä varten
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

escape

Nyt kun tämä kisa on saatu päätökseen, niin ei muuta kuin uutta ohjelmointi kisaa pystyyn  ;)

virgo

heh multa kyllä loppu jo A500 pitäskö laittaa seuraavaksi palkinnoksi A2000  >:D
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500

rams

Jos otetaan reilusti koko vuosi aikaa, niin sittenhän voisi ajatella vaikka jonkin pienen pelin tekemistä. Esimerkiksi Nim (http://en.wikipedia.org/wiki/Nim) voisi olla riittävän yksinkertainen ja voittavan tekoälyn luominenkin on helppoa. Siihen saisi varmaan ympättyä mukaan eri pelimoodeja, spritejä ja ääniä yms.

escape

Lainaus käyttäjältä: rams - tammikuu 03, 2014, 19:16
Jos otetaan reilusti koko vuosi aikaa, niin sittenhän voisi ajatella vaikka jonkin pienen pelin tekemistä. Esimerkiksi Nim (http://en.wikipedia.org/wiki/Nim) voisi olla riittävän yksinkertainen ja voittavan tekoälyn luominenkin on helppoa. Siihen saisi varmaan ympättyä mukaan eri pelimoodeja, spritejä ja ääniä yms.

Peli kuulostas hyvältä idealta. Tosin osallistuja määrä ei tässäkään kisassa kovin hääppöinen ollut, joten onko tehtävä liian haastava? En tiedä mikä houkuttelis porukkaa osallistumaan, kun ei edes Amiga tuonut suurta ohjelmoijien ryntäystä paikalle.

virgo

no sen ainakin lupaan että jos joku alkaa vääntään mulle poxiin jotain BBS Door peliä niin varmasti palkintoa on luvassa  :pondering:

alusta siis Amiga ja valittavat kielet Amiga Basic, Amos, konekieli ainakin noille löytyy development paketit

tänne kilpailua suunitellessani ajattelin myös et liian vaikeeta ei kannata harkita siksi näinkin yksinkertainen
perus pelirutiinin kisa

mutta toki ainakin BBS puolella olisi tarkotus ihan oikeasti alkaa vääntämään ihan oikeita pelejä
alusta vapaa samoin ideointi ja keskustelu luultavasti kys projektit vuotavat keskustelua tännekin  :thumbup:
osallistua saa vaikkei mitään osaisikaan jos ei muuta niin ideoida osaa jokainen !
Genetic-PET C64 BBS:
g-point.tunk.org port 1025

Genetic-point Amiga BBS:
g-point.tunk.org port 500