Castles (v. demo)

User projects written in or related to FreeBASIC.
Post Reply
ITomi
Posts: 154
Joined: Jul 31, 2015 11:23
Location: Hungary

Castles (v. demo)

Post by ITomi »

Hello!
This is my newest FB game, the "Castles", which is an ugly copy of Sami Tammilehto's "The castle" (1991).
The concept is the same as in that game: destroy the other castle with cannon ball.
Probably I will continue to develop this game (e.g. the players can buy bigger castles, stronger bullets, etc.), but you can use the source code free to develop your games from it.
Enjoy! :-)

Code: Select all

#include "fbgfx.bi"
Using FB
randomize

const kepszel=640 : const kepmag=480
const palyaszel=1280 : const palyamag=600
Const pi As Double=3.1415926535897932

dim shared as any ptr varkepe1,varkepe2,talajkep
dim shared vartomb(2,64*64,3) as integer
dim shared as integer var1x,var1y,var2x,var2y,var1lovirany,var2lovirany,nezetx,nezety,var1szel,var1mag,var2szel,var2mag
dim shared as ubyte var1letezik,var2letezik,aktivvar,var1lovseb,var2lovseb,koratadoidozito,nyelv,jatekallapot,var1maxepseg,var2maxepseg,var1mostepseg,var2mostepseg
dim shared as string nyertes

type targyak
    as ubyte letezik,sebesseg,mitcsinal
    as integer xhely,yhely,tav,ossztav,irany
end type

dim shared lovedek as targyak
dim shared darabka(15) as targyak

agyugolyo:
data 8
data 8
Data 5,5,7,7,7,7,5,5
Data 5,7,7,7,7,7,7,5
Data 7,7,7,7,7,7,7,7
Data 7,7,7,7,7,7,7,7
Data 7,7,2,2,2,2,2,7
Data 7,7,2,2,2,2,2,7
Data 5,7,2,2,2,2,7,5
Data 5,5,7,7,7,7,5,5

kastely1:
Data 64
Data 64
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,5,5,5,2,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,5,5,5,2,2,2,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,2,2,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,2,2,2,2,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,2,2,2,2,2,2,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,2,2,2,2,2,2,2,2,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,2,2,2,2,2,2,2,2,2,2,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,2,2,2,2,2,2,2,2,2,2,2,2,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
Data 4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4
Data 4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4
Data 4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4

kastely2:
Data 64
Data 64
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,5,5,5,3,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,5,3,3,3,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,3,3,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,3,3,3,3,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,3,3,3,3,3,3,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,3,3,3,3,3,3,3,3,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,3,3,3,3,3,3,3,3,3,3,3,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
data 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
Data 4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4
Data 4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4
Data 4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4,5,5,5,5,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,7,3,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
Data 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4

sub nezetigazitas(xkozep as integer,ykozep as integer)
    if xkozep-(kepszel/2)<0 then
        nezetx=0
    elseif xkozep+(kepszel/2)>palyaszel then
        nezetx=palyaszel-kepszel
    else
        nezetx=xkozep-(kepszel/2)
    end if
    if ykozep-(kepmag/2)<0 then
        nezety=0
    elseif ykozep+(kepmag/2)>palyamag then
        nezety=palyamag-kepmag
    else
        nezety=ykozep-(kepmag/2)
    end if
end sub

sub kiszinezo(erteke as integer,rajzxhely as integer,rajzyhely as integer,mit as ubyte)
 Select case erteke
  Case 0
     Color rgb(255,0,255) 'bíbor (maszk szín 16 és 32 bites képeknek)
  Case 1
     Color rgb(0,255,0) 'zöld szín
  Case 2
      Color rgb(255,0,0) 'vörös
  Case 3
      Color rgb(0,0,255) 'kék
  Case 4
      Color rgb(255,255,255) 'fehér
  Case 5
      Color rgb(0,0,0) 'fekete
  Case 6
      Color rgb(255,255,0) 'sárga
  Case 7
      Color rgb(128,128,128) 'szürke
  Case 8
      Color rgb(0,0,255) 'ezt még nem döntöttem el
  Case 9
      Color rgb(0,0,255) 'meg ezt sem
 End Select
 select case mit
 case 0:
    Pset talajkep,(rajzxhely,rajzyhely)
 case 1:
    Pset (rajzxhely,rajzyhely)
 end select
End sub

sub varcsinalo(melyik as ubyte, varxhely as integer, varyhely as integer)
    dim as integer szelesseg,magassag,i,j,ertek,keppont
    if melyik=1 then
        restore kastely1
    else
        restore kastely2
    end if
    read szelesseg
    read magassag
    if melyik=1 then
        var1szel=szelesseg : var1mag=magassag : var1maxepseg=100 : var1mostepseg=var1maxepseg
    else
        var2szel=szelesseg : var2mag=magassag : var2maxepseg=100 : var2mostepseg=var2maxepseg
    end if
    dim rajzxhely as integer=varxhely
    dim rajzyhely as integer=varyhely
    keppont=1
    For j=1 To magassag
        For i=1 To szelesseg
            Read ertek
            If ertek<>0 Then
                kiszinezo(ertek,rajzxhely,rajzyhely,0)
                vartomb(melyik,keppont,0)=rajzxhely
                vartomb(melyik,keppont,1)=rajzyhely
                vartomb(melyik,keppont,2)=ertek
                keppont+=1
            end if
            rajzxhely=rajzxhely+1
            If i=szelesseg then
                rajzyhely=rajzyhely+1
                rajzxhely=rajzxhely-szelesseg
            End If
        Next i
    Next j
end sub

sub varkirajzolo(melyik as ubyte,xstart as integer, ystart as integer)
    dim as integer sz,m
    if melyik=1 then
        sz=var1szel : m=var1mag
    else
        sz=var2szel : m=var2mag
    end if
    for p as integer=1 to sz*m
         if vartomb(melyik,p,2)<>5 then
             Select case vartomb(melyik,p,2)
                Case 0
                    Color rgb(255,0,255) 'bíbor (maszk szín 16 és 32 bites képeknek)
                  Case 1
                     Color rgb(0,255,0) 'zöld szín
                  Case 2
                      Color rgb(255,0,0) 'vörös
                  Case 3
                      Color rgb(0,0,255) 'kék
                  Case 4
                      Color rgb(255,255,255) 'fehér
                  Case 5
                      Color rgb(0,0,0) 'fekete
                  Case 6
                      Color rgb(255,255,0) 'sárga
                  Case 7
                      Color rgb(128,128,128) 'szürke
                  Case 8
                      Color rgb(0,0,255) 'ezt még nem döntöttem el
                  Case 9
                      Color rgb(0,0,255) 'meg ezt sem
                End Select
            pset talajkep,(vartomb(melyik,p,0),vartomb(melyik,p,1))
         end if
    next p
end sub

sub lovedekrajzolo(ittx as integer,itty as integer)
    dim as ubyte szelesseg,magassag,ertek,kilepes,talalatvar1be,talalatvar2be
    restore agyugolyo
    read szelesseg
    read magassag
    dim rajzxhely as integer=ittx-szelesseg/2
    dim rajzyhely as integer=itty-magassag/2
    kilepes=0 : talalatvar1be=0 : talalatvar2be=0
    For j as integer=itty-magassag/2 To itty+magassag/2
        For i as integer=ittx-szelesseg/2 To ittx+szelesseg/2
            if point(i+nezetx,j+nezety,talajkep)=rgb(0,255,0) then
                for ujj as integer=(j+nezety)-magassag/2 To (j+nezety)+magassag/2
                    For uji as integer=(i+nezetx)-szelesseg/2 To (i+nezetx)+szelesseg/2
                        Color rgb(0,0,0)
                        pset talajkep,(uji,ujj)
                    next uji
                next ujj
                kilepes=1 : exit for
            elseif var1letezik=1 and i+nezetx>=var1x and i+nezetx<=var1x+var1szel and j+nezety>=var1y and j+nezety<=var1y+var1mag then
                    for sz as integer=ittx-szelesseg/2 to ittx+szelesseg/2
                        for m as integer=itty-magassag/2 to itty+magassag/2
                            for p as integer=0 to var1szel*var1mag
                                if sz+nezetx=vartomb(1,p,0) and m+nezety=vartomb(1,p,1) and vartomb(1,p,2)<>5 then
                                    talalatvar1be=1
                                    Color rgb(0,0,0)
                                    pset talajkep,(vartomb(1,p,0),vartomb(1,p,1))
                                    vartomb(1,p,2)=5 : kilepes=1
                                end if
                            next p
                        next m
                    next sz
            elseif var2letezik=1 and i+nezetx>=var2x and i+nezetx<=var2x+var2szel and j+nezety>=var2y and j+nezety<=var2y+var2mag then
                    for sz as integer=ittx-szelesseg/2 to ittx+szelesseg/2
                        for m as integer=itty-magassag/2 to itty+magassag/2
                            for p as integer=0 to var2szel*var2mag
                                if sz+nezetx=vartomb(2,p,0) and m+nezety=vartomb(2,p,1) and vartomb(2,p,2)<>5 then
                                    talalatvar2be=1
                                    Color rgb(0,0,0)
                                    pset talajkep,(vartomb(2,p,0),vartomb(2,p,1))
                                    vartomb(2,p,2)=5 : kilepes=1
                                end if
                            next p
                        next m
                    next sz
            end if
            if kilepes=1 then exit for
        next i
        if kilepes=1 then exit for
    next j
    if kilepes=1 then
        dim as ubyte ddb=0
        for i as integer=rajzxhely to rajzxhely+15
            if int(rnd*4)>2 then
                darabka(ddb).letezik=1
                darabka(ddb).xhely=i
                darabka(ddb).yhely=rajzyhely
                darabka(ddb).sebesseg=int(rnd*10)+1
                darabka(ddb).irany=int(rnd*50)+1 'Az irany változó itt most élettartamot jelent!
                ddb+=1
            end if
        next i
        if talalatvar1be=1 then
            var1mostepseg-=1
            if var1mostepseg<25 then
                nyertes="2."
                var1letezik=0 : var2letezik=0 : lovedek.letezik=0
                for i as ubyte=0 to 15
                    if darabka(i).letezik=1 then darabka(i).letezik=0
                next i
                imagedestroy talajkep
                jatekallapot=3
            end if
        end if
        if talalatvar2be=1 then
            var2mostepseg-=1
            if var2mostepseg<25 then
                nyertes="1."
                var1letezik=0 : var2letezik=0 : lovedek.letezik=0
                for i as ubyte=0 to 15
                    if darabka(i).letezik=1 then darabka(i).letezik=0
                next i
                imagedestroy talajkep
                jatekallapot=3
            end if
        end if
        koratadoidozito=100
        lovedek.letezik=0
    else
        For j as ubyte=1 To magassag
            For i as ubyte=1 To szelesseg
                Read ertek
                If ertek<>0 Then
                    kiszinezo(ertek,rajzxhely,rajzyhely,1)
                end if
                rajzxhely=rajzxhely+1
                If i=szelesseg then
                    rajzyhely=rajzyhely+1
                    rajzxhely=rajzxhely-szelesseg
                End If
            Next i
        Next j
    end if
end sub

sub talajcsinalo()
    dim as integer eddig,elozocsucs
    dim as ubyte tav,tavszamlalo
    for i as integer=0 to palyaszel
        for j as integer=0 to palyamag/2
            if int(rnd*1000)=100 then
                Color rgb(255,255,255)
                pset talajkep,(i,j)
            end if
        next j
    next i
    elozocsucs=int(rnd*palyamag/2)+5 : tav=int(rnd*200)+1 : tavszamlalo=0
    for i as integer=0 to palyaszel
        if i>=var1x and i<=var1x+var1szel then
            for j as integer=var1y+var1mag to palyamag
                Color rgb(0,255,0)
                pset talajkep,(i,j)
            next j
            eddig=var1y
        elseif i>=var2x and i<=var2x+var2szel then
            for j as integer=var2y+var2mag to palyamag
                Color rgb(0,255,0)
                pset talajkep,(i,j)
            next j
            eddig=var2y
        else
            if tavszamlalo<tav/2 then
                eddig=elozocsucs+1
            else
                eddig=elozocsucs-1
            end if
            for j as integer=palyamag to palyamag-eddig step -1
                Color rgb(0,255,0)
                pset talajkep,(i,j)
            next j
        end if
        tavszamlalo+=1 : elozocsucs=eddig
        if tavszamlalo>=tav then
            tav=int(rnd*200)+10 : tavszamlalo=0
        end if
    next i
end sub

function pontirany(x1 as integer,y1 as integer,x2 as integer,y2 as integer) as double
    dim as double szam
    szam=atan2(y2-y1,x2-x1)
    if szam<0 then
            szam=szam+2*pi
    end if
    return 360-(szam*180)/pi
end function

'---------FŐPROGRAM---------
screenres kepszel,kepmag,32

nyelv=1 : jatekallapot=1
do
    select case jatekallapot
    case 1
        screenlock
        cls
        if nyelv=1 then
                    dim sz0 as string="CASTLES"
                    dim sz1 as string="Keszitette: ITomi (2016), v.demo"
                    dim sz2 as string="KEZDES: <SZOKOZ>; KILEPES: <ESC>; IN ENGLISH: <L>"
                    dim sz3 as string="Otletet Sami Tammilehto 1991-es The castle cimu jateka adta"
                    dim sz4 as string="<Alt>+<ENTER>; ablakos/teljeskepernyos mod"
                    dim sz5 as string="Kulon koszonet a FreeBasic keszitoinek es a forumkozossege tagjainak!"
                    draw string (320-(8*len(sz0)/2),5),sz0
                    draw string (320-(8*len(sz1)/2),20),sz1
                    draw string (5,30),sz3
                    draw string (5,80),sz2
                    draw string (10,140),sz4
                    draw string (5,160),sz5
        else
                    dim sz0 as string="CASTLES"
                    dim sz1 as string="By: ITomi (2016), v.demo"
                    dim sz2 as string="BEGIN: <SPACE>; EXIT: <ESC>; MAGYARUL: <L>"
                    dim sz3 as string="Idea by Sami Tammilehto's game The castle from 1991"
                    dim sz4 as string="<Alt>+<ENTER>; windowed/full screen mode"
                    dim sz5 as string="Special thanks for the creators of FreeBasic and members of its community!"
                    draw string (320-(8*len(sz0)/2),5),sz0
                    draw string (320-(8*len(sz1)/2),20),sz1
                    draw string (5,30),sz3
                    draw string (5,80),sz2
                    draw string (10,140),sz4
                    draw string (5,160),sz5
        end if
        if multikey(sc_escape) then jatekallapot=0
        if multikey(sc_L) then
                if nyelv=1 then
                    nyelv=2
                else
                    nyelv=1
                end if
        end if
        if multikey(sc_space) then
            cls
            talajkep=imagecreate(palyaszel,palyamag)
            do
                var1x=int(rnd*palyaszel/2)  : var1y=palyamag/2+int(rnd*palyamag/4)
                var2x=palyaszel/2+int(rnd*palyaszel/2)-64  : var2y=palyamag/2+int(rnd*palyamag/4)
            loop until abs(var1x-var2x)>kepszel
            varcsinalo(1,var1x,var1y) : var1letezik=1
            varcsinalo(2,var2x,var2y) : var2letezik=1
            var1lovirany=45 : var2lovirany=135
            var1lovseb=4 : var2lovseb=4
            aktivvar=1
            talajcsinalo()
            nezetx=0 : nezety=0
            nezetigazitas(var1x,var1y)
            lovedek.letezik=0
            jatekallapot=2
        end if
        screenunlock
        sleep 10
    case 2
        screenlock
        cls
        put (0,0),talajkep,(nezetx,nezety)-(nezetx+kepszel,nezety+kepmag),add
        select case aktivvar
        case 1:
            if lovedek.letezik=0 then
                dim radianbanirany as double
                dim as integer vvegex,vvegey,vvegex2,vvegey2
                if multikey(sc_left) then
                    var1lovirany+=1
                    if var1lovirany>360 then var1lovirany=0
                end if
                if multikey(sc_right) then
                    var1lovirany-=1
                    if var1lovirany<0 then var1lovirany=360
                end if
                if multikey(sc_up) then
                    if var1lovseb<10 then var1lovseb+=1
                end if
                if multikey(sc_down) then
                    if var1lovseb>2 then var1lovseb-=1
                end if
                radianbanirany=(360-var1lovirany)*pi/180
                vvegex=(var1x+32)+cos(radianbanirany)*32
                vvegey=(var1y-4)+sin(radianbanirany)*32
                Color rgb(255,0,0)
                line ((var1x+32)-nezetx,(var1y-4)-nezety)-(vvegex-nezetx,vvegey-nezety)
                vvegex2=(var1x+32)+cos(radianbanirany)*(32/(10/var1lovseb))
                vvegey2=(var1y-4)+sin(radianbanirany)*(32/(10/var1lovseb))
                Color rgb(255,255,0)
                line ((var1x+32)-nezetx,(var1y-4)-nezety)-(vvegex2-nezetx,vvegey2-nezety)
            end if
        case 2:
            if lovedek.letezik=0 then
                dim radianbanirany as double
                dim as integer vvegex,vvegey,vvegex2,vvegey2
                if multikey(sc_left) then
                    var2lovirany+=1
                    if var2lovirany>360 then var2lovirany=0
                end if
                if multikey(sc_right) then
                    var2lovirany-=1
                    if var2lovirany<0 then var2lovirany=360
                end if
                if multikey(sc_up) then
                    if var2lovseb<10 then var2lovseb+=1
                end if
                if multikey(sc_down) then
                    if var2lovseb>2 then var2lovseb-=1
                end if
                radianbanirany=(360-var2lovirany)*pi/180
                vvegex=(var2x+32)+cos(radianbanirany)*32
                vvegey=(var2y-4)+sin(radianbanirany)*32
                Color rgb(255,0,0)
                line ((var2x+32)-nezetx,(var2y-4)-nezety)-(vvegex-nezetx,vvegey-nezety)
                vvegex2=(var2x+32)+cos(radianbanirany)*(32/(10/var2lovseb))
                vvegey2=(var2y-4)+sin(radianbanirany)*(32/(10/var2lovseb))
                Color rgb(255,255,0)
                line ((var2x+32)-nezetx,(var2y-4)-nezety)-(vvegex2-nezetx,vvegey2-nezety)
            end if
        end select
        if multikey(sc_q) then
            cls
            var1letezik=0 : var2letezik=0 : lovedek.letezik=0
            for i as ubyte=0 to 15
                if darabka(i).letezik=1 then darabka(i).letezik=0
            next i
            imagedestroy talajkep
            jatekallapot=1
        end if
        if multikey(sc_enter) and lovedek.letezik=0 and koratadoidozito<1 then
            lovedek.letezik=1
            select case aktivvar
            case 1:
                 lovedek.xhely=(var1x+32)-nezetx
                 lovedek.yhely=(var1y-16)-nezety
                 lovedek.sebesseg=var1lovseb : lovedek.irany=var1lovirany : lovedek.tav=0 : lovedek.ossztav=kepszel/(10/var1lovseb) : lovedek.mitcsinal=0
            case 2:
                 lovedek.xhely=(var2x+32)-nezetx
                 lovedek.yhely=(var2y-16)-nezety
                 lovedek.sebesseg=var2lovseb : lovedek.irany=var2lovirany : lovedek.tav=0 : lovedek.ossztav=kepszel/(10/var2lovseb) : lovedek.mitcsinal=0
            end select
        end if
        if lovedek.letezik=1 then
            dim radianbanirany as double
            dim as integer elozolovx,elozolovy
            select case lovedek.mitcsinal
            case 0
            radianbanirany=(360-lovedek.irany)*pi/180
            elozolovx=lovedek.xhely : elozolovy=lovedek.yhely
            lovedek.xhely=lovedek.xhely+cos(radianbanirany)*lovedek.sebesseg
            lovedek.yhely=lovedek.yhely+sin(radianbanirany)*lovedek.sebesseg
            if lovedek.xhely<elozolovx then
                if nezetx-abs(lovedek.xhely-elozolovx)>0 then nezetx-=abs(lovedek.xhely-elozolovx)
            elseif lovedek.xhely>elozolovx then
                if nezetx+abs(lovedek.xhely-elozolovx)<palyaszel-kepszel then nezetx+=abs(lovedek.xhely-elozolovx)
            end if
            if lovedek.yhely<elozolovy then
                if nezety-abs(lovedek.yhely-elozolovy)>0 then nezety-=abs(lovedek.yhely-elozolovy)
            elseif lovedek.yhely>elozolovy then
                if nezety+abs(lovedek.yhely-elozolovy)<palyamag-kepmag then nezety+=abs(lovedek.yhely-elozolovy)
            end if
            if lovedek.tav>lovedek.ossztav then lovedek.mitcsinal=1
            lovedek.tav+=lovedek.sebesseg
            case 1:
            radianbanirany=(360-lovedek.irany)*pi/180
            elozolovx=lovedek.xhely
            lovedek.xhely=lovedek.xhely+cos(radianbanirany)*lovedek.sebesseg
            lovedek.yhely+=lovedek.sebesseg
            if lovedek.xhely<elozolovx then
                if nezetx-abs(lovedek.xhely-elozolovx)>0 then nezetx-=abs(lovedek.xhely-elozolovx)
            elseif lovedek.xhely>elozolovx then
                if nezetx+abs(lovedek.xhely-elozolovx)<palyaszel-kepszel then nezetx+=abs(lovedek.xhely-elozolovx)
            end if
            if nezety+lovedek.sebesseg+kepmag<palyamag then nezety+=lovedek.sebesseg
            end select
            if lovedek.xhely<1 or lovedek.xhely>palyaszel or lovedek.yhely>palyamag then
                koratadoidozito=100
                lovedek.letezik=0
            else
                lovedekrajzolo(lovedek.xhely,lovedek.yhely)
            end if
        end if
        for i as ubyte=0 to 15
            if darabka(i).letezik=1 then
                darabka(i).irany-=1
                if darabka(i).irany<1 or point(darabka(i).xhely,darabka(i).yhely-darabka(i).sebesseg,talajkep)<>rgb(0,0,0) then
                    darabka(i).letezik=0
                else
                    darabka(i).yhely-=darabka(i).sebesseg
                    Color rgb(255,255,0)
                    pset (darabka(i).xhely+nezetx,darabka(i).yhely+nezety)
                end if
            end if
        next i
        dim as integer epseg,csikhossz,epmuthossz
        dim as ubyte yhely
        
        csikhossz=100
        epseg=(100*var1mostepseg)/var1maxepseg
        epmuthossz=(csikhossz/epseg)/100
        yhely=2
        for i as ubyte=0 to 10
            line (2,yhely)-(102,yhely),rgb(255,255,255)
            yhely+=1
        next i
        yhely=2
        for i as ubyte=0 to 10
            line (2,yhely)-(2+epmuthossz,yhely),4
            yhely+=1
        next i
        draw string (2,25),str(var1mostepseg)
        epseg=(100*var2mostepseg)/var2maxepseg
        epmuthossz=(csikhossz/epseg)/100
        yhely=2
        for i as ubyte=0 to 10
            line (kepszel-102,yhely)-(kepszel-2,yhely),rgb(255,255,255)
            yhely+=1
        next i
        yhely=2
        for i as ubyte=0 to 10
            line (kepszel-102,yhely)-((kepszel-102)+epmuthossz,yhely),9
            yhely+=1
        next i
        draw string (kepszel-102,25),str(var2mostepseg)
        Color rgb(255,255,255)
        if nyelv=1 then
            draw string (2,kepmag-20),"NYIL gombokkal allithato a loves milyensege, ENTER-rel lohetsz, Q-val kilephetsz."
        else
            draw string (2,kepmag-20),"ARROW keys to set quality of shoot, ENTER to fire, Q to quit."
        end if
        if koratadoidozito>0 then
            koratadoidozito-=1
            if koratadoidozito<1 then
                if aktivvar=1 then
                    aktivvar=2 : nezetigazitas(var2x,var2y)
                else
                    aktivvar=1 : nezetigazitas(var1x,var1y)
                end if
            end if
        end if
        screenunlock
        sleep 10
    case 3
        screenlock
        cls
        if nyelv=1 then
            draw string (5,80),"Nyert a(z): "+str(nyertes)+" jatekos! Kilepes: <Q>"
        else
            draw string (5,80),"The winner is the: "+str(nyertes)+" player! Exit: <Q>"
        end if
        if multikey(sc_q) then
            cls : jatekallapot=1
        end if
        screenunlock
        sleep 10
    end select
loop until jatekallapot=0
sancho2
Posts: 547
Joined: May 17, 2015 6:41

Re: Castles (v. demo)

Post by sancho2 »

The shots hit something in the sky and bounce short. You would have to shoot through the mountains to get to the castle.
There is no indication of which direction the target is.
The key input both at the language selection and to adjust your shot strength needs to be fine tuned. When you press a key, dozens of inputs are sent.
h4tt3n
Posts: 698
Joined: Oct 22, 2005 21:12
Location: Denmark

Re: Castles (v. demo)

Post by h4tt3n »

This reminds me a lot of the old game Tanx for the Amiga. It's a nice start, but the game need some work to be playable. It seems that you have to shoot a tunnel through the mountain to hit the other castle.
ITomi
Posts: 154
Joined: Jul 31, 2015 11:23
Location: Hungary

Re: Castles (v. demo)

Post by ITomi »

Thank you for your comments!
Yes, the game needs more works, but I was impatient with time :-)
Sancho2: both players are same direction from each other, so the blue player is always to the right from the red player.
H4tt3n: I don't know that Amiga game, but I will check it. You have to excavate a tunnel with the balls in the moutains or shoot over it.
Post Reply