Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Pelikortit

Qman [17.09.2006 16:08:19]

#

Oletko toivonut qbasicille pelikortteja??

tässä olisi mielestäni hyvä kortin näyttäjä joka toimii näin:
piirräkortti (koordinaatit)x,y,(miten kortti piirretään)puoli,arvo, maa

kiitokset dj wolffille txt-subista...

DECLARE SUB txt (tek$, mika.kx!, mika.ky!, vari!)
DECLARE SUB piirrakortti (x!, y!, puoli!, arvo!, maa!)
CLS
SCREEN 13
DIM SHARED tx AS INTEGER, ty AS INTEGER, tekstuuri AS INTEGER
DIM SHARED x(1 TO 52) AS SINGLE, y(1 TO 52) AS SINGLE, a(1 TO 52) AS SINGLE
DIM SHARED p(1 TO 52) AS SINGLE, m(1 TO 52) AS SINGLE
DIM SHARED kirjain(1 TO 8, 1 TO 8, 1 TO 255) AS INTEGER
GOSUB fontti.muistiin
GOSUB alustakortti                          'alustetaan pakka
LINE (0, 0)-(320, 200), 2, BF
FOR i = 1 TO 52
  piirrakortti x(i), y(i), p(i), a(i), m(i)
  WAIT &H3DA, 8
NEXT
END

fontti.muistiin:
FOR asciikoodi = 1 TO 255
 IF asciikoodi = 7 THEN asciikoodi = 8 ELSE 'estetään PIIPpaus
 COLOR 16: LOCATE 1, 1: PRINT CHR$(asciikoodi)
 FOR ky = 1 TO 8
  FOR kx = 1 TO 8
   vari = POINT(kx - 1, ky - 1)
   kirjain(kx, ky, asciikoodi) = vari
  NEXT kx
 NEXT ky
NEXT asciikoodi
RETURN


alustakortti:
tekstuuri = 2                               'korttien tekstuuri; luvut väliltä 1 - 60
i = 1
v = 0
FOR s = 1 TO 4                              'käydään silmukoilla
 FOR i = i TO i + 12                        'kortin kaikki muuttujat
  x(i) = i * 3 + 70                         'x-koordinaatit
  y(i) = i * 2 + 40                         'y-koordinaatit
  a(i) = i - v                              'arvo
  p(i) = 1                                  'puoli
  m(i) = s                                  'maa (1:Hertta,2:Ruutu,3:pata,4:risti)
 NEXT
 v = v + 13
NEXT
RETURN
SUB piirrakortti (x!, y!, puoli!, arvo!, maa!)
   IF puoli! < 3 THEN                                'jos kortti on oikeinpäin
    IF puoli! = 1 THEN c = 15                        'valitaan kortille
    IF puoli! = 2 THEN c = 0                         'väri, ja
    LINE (x! - 10, y! - 10)-(x! + 10, y! + 15), c, BF'luodaan kortin sisusta
   ELSE                                              'muulloin
   IF puoli! = 3 THEN c = 1                          'tehdään
   IF puoli! = 4 THEN c = 255: tekstuuri = -tekstuuri'kortin
    FOR py = -10 TO 15                               'päälypuoli
     FOR px = -10 TO 10
      PSET (x! + px, y! + py), c
      c = c + tekstuuri
     NEXT px
    NEXT py
   IF puoli! = 4 THEN : tekstuuri = -tekstuuri
   END IF
   IF puoli! = 1 OR puoli! = 3 THEN c = 0
   IF puoli! = 2 OR puoli! = 4 THEN c = 15
   LINE (x! - 10, y! - 10)-(x! + 10, y! + 15), c, B  'kortin reunat

   IF arvo! = 1 THEN arv$ = "A"
   IF arvo! = 2 THEN arv$ = "2"
   IF arvo! = 3 THEN arv$ = "3"
   IF arvo! = 4 THEN arv$ = "4"
   IF arvo! = 5 THEN arv$ = "5"
   IF arvo! = 6 THEN arv$ = "6"
   IF arvo! = 7 THEN arv$ = "7"
   IF arvo! = 8 THEN arv$ = "8"
   IF arvo! = 9 THEN arv$ = "9"
   IF arvo! = 10 THEN arv$ = "10"
   IF arvo! = 11 THEN arv$ = "J"
   IF arvo! = 12 THEN arv$ = "Q"
   IF arvo! = 13 THEN arv$ = "K"
   x = x - 4
   IF puoli! = 1 THEN
    SELECT CASE maa!
     CASE 1: c = 40: txt "�", x, y - 5, 40           'merkit ja
     CASE 2: c = 40: txt "�", x, y - 5, 40           'merkkejen väri
     CASE 3: c = 16: txt "�", x, y - 5, 16
     CASE 4: c = 16: txt "�", x, y - 5, 16
    END SELECT
   ELSEIF puoli! = 2 THEN                            'ja negana...
    SELECT CASE maa!
     CASE 1: c = 120: txt "�", x, y - 5, 120
     CASE 2: c = 120: txt "�", x, y - 5, 120
     CASE 3: c = 15: txt "�", x, y - 5, 15
     CASE 4: c = 15: txt "�", x, y - 5, 15
    END SELECT
   END IF
   IF puoli! < 3 THEN
    IF arv$ = "10" THEN x = x - 4
    x = x - 8                                        'asetetaan kursori kohdalleen
    txt arv$, x, y + 5, c                            'ja kirjoitetaan kortin arvo
   END IF
END SUB

SUB txt (tek$, mika.kx, mika.ky, vari)
FOR kerrat = 1 TO LEN(tek$)                      'näitä ei kannata
 asciikoodi = ASC(MID$(tek$, kerrat, LEN(tek$))) 'kauheasti tutkia
 FOR ky = 1 TO 8                                 'koska koodi on
  FOR kx = 1 TO 8                                'aivan hirveää
   IF NOT kirjain(kx, ky, asciikoodi) = 0 THEN
    kirjain(kx, ky, asciikoodi) = vari
    PSET (kx + mika.kx, ky + mika.ky), kirjain(kx, ky, asciikoodi)
   ELSE
   END IF
  NEXT kx
 NEXT ky
 mika.kx = mika.kx + 8
NEXT kerrat
END SUB

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta