http://alpha-thema-online.uv.ro
Fa-ti si tu propriul forum, pe www.myforum.ro!
Pagina de start a forumului http://alpha-thema-online.uv.ro Autentificare Inregistrare FAQ Membri Cautare

Pagina de start a forumului http://alpha-thema-online.uv.ro » Exemple Coduri » Encryption - :7&-$ =;
Creaza un subiect nou  Raspunde la subiect Subiectul anterior :: Subiectul urmator 
Encryption - :7&-$ =;
MesajTrimis: 24/07/2007 10:15 Raspunde cu citat (quote)
Ad_Infinitum
Administrator
Administrator
Ad_Infinitum
Data inscrierii: 23/Iun/2007
Mesaje: 212




`The types required...

remstart
tHiScoreGlobal
File Name, Number of scores to remember
keyword and length of keyword
seed for random number
remend
type tHiScoreGlobal
file$
count
keyword$
keylength
seed
endtype

remstart
tHiScore
Player Name, score
remend
type tHiScore
name$
score
endtype

function HiScoreInit()
remstart
@C Făurite the necessary variables and arrays
@C Bear in mind that this conține file is Self-Contained
@C In other words, it does not rely on any external elements
remend

global gHSG as tHiScoreGlobal
gHSG.file$ = "hiscore.dat"
gHSG.count = 10

dim gHiScore() as tHiScore
add to queue gHiScore()

` For encypted files, we need a keyword
gHSG.KeyWord$ = "TheGameCreators"
gHSG.KeyLength = len(gHSG.KeyWord$)

endfunction

function HiScoreSetFile(file$)
remstart
@C Sets the file name to use for Hi Score data
remend

gHSG.file$ = file$

endfunction

function HiScoreSetCount(count)
remstart
@C Sets the number of Hi Scores to remember
remend

gHSG.count = count

endfunction

function HiScoreLoad()
remstart
@C Load the Hi Scores from the Hi Score File
@C The compus of the file is Name, Score, Name, Score
@C If the file does not exist, it will skip this section of code.
@C If the file doesn't exist, or the file doesn't contain enough hi scores,
@C they will be added.
@C The datea is encrypted
@C The first value is the seed. Each entry is then a length, value and name
remend

` If the Hi Score array is already populated, clear it.
if array count(gHiScore()) > 1
empty array gHiScore()
add to queue gHiScore()
endif

` Find a free file number
if file exist(gHSG.file$)
filenum = getFreeFile()
open to read filenum, gHSG.file$
` The first byte is the "seed". This seed ensures the encryption changes
` every time we save the file.
read long filenum, gHSG.seed
while not file end(filenum)
add to queue gHiScore()
read long filenum, valueLength
read long filenum, var
gHiScore().score = HiScoreDecryptValue(var)
var$ = ""
for n = 1 to ValueLength
read byte filenum, in
var$ = var$ + chr$(in)
next n
gHiScore().name$ = HiScoreDecrypt(var$)
endwhile
close file filenum
endif

` Call the function to ensure the table is fully populated
HiScoreAddDefaultEntries()

endfunction

function HiScoreSave()
remstart
@C Save the Hi Scores to the Hi Score File
@C The format of the file is Name, Score, Name, Score
@C If the file already exists, it will delete it first
@C The values will first be encrypted.
@C Because we can't predict the values, we can't simply write a string.
@C Some values may be line ending values, which will "break" our table.
@C To resolve this, we will writ ethe values character by character,
@C After first recording the length of the value.
remend

` If the Hi Score array isn't populated, lucrate default scores
if array count(gHiScore()) < array count(gHiScore())
HiScoreAddDefaultEntries()
endif

` Find a free file number
if file exist(gHSG.file$) then delete file gHSG.file$

filenum = getFreeFile()
open to write filenum, gHSG.file$
HiScoreGenerateSeed()
write long filenum, gHSG.seed
for n = 1 to array count(gHiScore())
write long filenum, len(gHiScore(n).name$)
write long filenum, HiScoreEncryptValue(gHiScore(n).score)
result$ = HiScoreEncrypt(gHiScore(n).name$)
for m = 1 to len(result$)
write byte filenum, asc(mid$(result$,m,1))
next m
next n
close file filenum

endfunction

function hiScoreGetName(position)
remstart
@C Returns the name at the specified position
@C If the position is not valid, it will return "#"
remend

if position > 0 and position <= array count(gHiScore())
name$ = gHiScore(position).name$
else
name$ = "#"
endif

endfunction name$

function hiScoreGetScore(position)
remstart
@C Returns the score at the specified position
@C If the position is not valid, it will return -1
remend

if position > 0 and position <= array count(gHiScore())
score = gHiScore(position).score
else
score = -1
endif

endfunction score


function hiScoreAddDefaultEntries()
remstart
@C This function simply populates the hiscore array
@C with defaault values to ensure it contains the
@C desired number of entries
remend

` If the number of hi scores < the desired amount, add more
` The Hi Scores are in descending order, so we can make these scores 0
if array count(gHiScore()) < gHSG.count
for n = (array count(gHiScore()) + 1) to gHSG.count
add to queue gHiScore()
gHiScore().name$ = "Anon"
gHiScore().score = 0
next n
endif

endfunction

function hiScoreCheckScore(score)
remstart
@C Takes the score parameter and checks if it is higher
@C than current low score. If yes, return position
@C If no, return -1
remend

position = -1
for n = gHSG.count to 1 step -1
if score < gHiScore(n).score then exit
position = n
next n

endfunction position

function hiScoreAddScore(name$, score)
remstart
@C Check the position, and add the score
@C We achieve this by shifting all lower scores down by 1,
@C and inserting our new score
remend

position = hiScoreCheckScore(score)
if position <> -1
for n = gHSG.count - 1 to position step - 1
gHiScore(n + 1).name$ = gHiScore(n).name$
gHiScore(n + 1).score = gHiScore(n).score
next n
gHiScore(position).name$ = name$
gHiScore(position).score = score
endif

endfunction

function HiScoreEncrypt(txt$)
remstart
@C Encrypt the value and return the result
@C Use the KeyWord, the random seed and bitwise operations
remend

randomize gHSG.seed
for n = 1 to len(txt$)
char1 = asc(mid$(txt$,n,1))
char2 = asc(mid$(gHSG.KeyWord$,rnd(KeyLength - 1) + 1,1))
result$ = result$ + chr$(char1 ~~ char2)
next n

endfunction result$

function HiScoreDeCrypt(txt$)
remstart
@C This is what is called "Smoke and Mirrors",
@C just to illustrate a point. Encryption and Decryption is
@C exactly the same operation, so we will call the previous function
remend

result$ = HiScoreEncrypt(txt$)

endfunction result$

function HiScoreEncryptValue(value)
remstart
@C Encrypt the value and return the result
@C Use the KeyWord, the random seed and bitwise operations
remend

randomize gHSG.seed
keyvalue = asc(mid$(gHSG.KeyWord$,rnd(KeyLength - 1) + 1,1))
result = value ~~ keyValue

endfunction result

function HiScoreDeCryptValue(value)
remstart
@C This is what is called "Smoke and Mirrors",
@C just to illustrate a point. Encryption and Decryption is
@C exactly the same operation, so we will call the previous function
remend

result = HiScoreEncryptValue(value)

endfunction result

function HiScoreGenerateSeed()
remstart
@C Generate the random seed for encryption
remend

randomize timer()
gHSG.seed = rnd(255)

endfunction

function getFreeFile()
remstart
@C Find a free file number to use
remend

n = 1
while file open(n) = 1
inc n
endwhile

endfunction n
Vezi profilul utilizatorului Trimite mesaj privat

Encryption - :7&-$ =;
 Pagina de start a forumului http://alpha-thema-online.uv.ro » Exemple Coduri
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
Ora este GMT + 3 ore  
Pagina 1 din 1  

  
  
 Creaza un subiect nou  Raspunde la subiect  


Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
    Powered by phpBB © 2001-2004 phpBB Group. phpBB Skin by Vjacheslav Trushkin.