Author Topic: Project Snake X - help  (Read 26035 times)

0 Members and 1 Guest are viewing this topic.

Offline Builderboy

  • Physics Guru
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 5673
  • Rating: +613/-9
  • Would you kindly?
    • View Profile
Re: Project Snake X - help
« Reply #60 on: August 16, 2010, 12:41:36 am »
I <3 indented code ^^ I <3 it so much I started writing a small font editor in Axe so i could edit my Axe programs with indented code in real time :)

Offline Snake X

  • Ancient Veteran
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 810
  • Rating: +33/-8
    • View Profile
Re: Project Snake X - help
« Reply #61 on: August 16, 2010, 04:05:23 pm »
yeah.. but still, my code has an issue. Once I get this sorted out, I can actually start coding the game! issue is if I press help or scores, it will go into the subroutines which makes it display timed mode/classic mode which should only happen if the bit is set to 1 I think it is?
Code: [Select]
:.SNAKEX
:
:.<DATA>
:.LOGO
:[07C0000000000000000000001FE0000000000000000000001FF0000000780000000000003FF0000000FC0000000001F87FF7CF0000FC0000000787F87FF7DF87E0FC0000001F87F07BF7FF8FF0FC0000003F87E079E7FF8FF8FC0000003FC7C07F07FF9FFCFC1000001FEF807FE7FF8FFCFC7C00000FFF807FF7FF8FFCFDFE1E0007FF807FF7FF8FFEFDFE3FC003FF001FF7FF9FFEFFFC7FC001FE0001F7FF9FFEFFF8FFC001FF0039F7EF9FFEFFE0FFC000FF8079F7EFDFFEFFC1FBC001FFC0FFF7EFDFFEFFE1FFC003FFF0FFF7C30FFEFFE1FFC003FFFC7FE3C00FDFFFF1FF8007E7FC1F0000000EFDFFFDE00FC3FC00000000007CFEFBE01F83F80000000000187EFFE03F83F80000000000003E7FE03F8040000000000000003FC03F00000000000000000000000E]→Pic1
:
:.MENU RAIN
:[8080808000000000]→Pic2
:
:.MENU ARROW
:[0010181C18100000]→Pic3
:
:.MENU ITEMS
:"PLAY"→Str1
:"HELP"→Str2
:"SCORES"→Str3
:"QUIT"→Str4
:"ADVENTURE MODE"→Str6
:"TIMED MODE"→Str7
:"CLASSIC MODE"→Str8
:"MAIN MENU"→Str9
:
:.<INITIALIZING>
:DiagnosticOff
:ClrDraw
:ClrDraw{^r}
:
:.STORE MENU TO BACK BUFFER
:Fix 1
:Fix 5
:Text(30,28→M→N,Str1)
:Text(30,36,Str2)
:Text(30,44,Str3)
:Text(30,52,Str4)
:DrawInv
:StorePic
:ClrDraw
:
:.INTRO EFFECT
:For(A,0,63)
:  Line(0,A,95,63-A)
:  DispGraph
:End
:For(A,0,95)
:  Line(A,0,95-A,63)
:  DispGraph
:End
:
:1→A→Z
:
:
:.<MENU LOOP>
:Repeat getKey→K=9 and (M=N)
:ReturnIf getKey(15)
:
:  .MOVE CURSOR
:  .Update the cursor destination and current position, although does not draw cursor
:  .there are three things being combining to get a new value of N. First, M>N will be 1 if M (destination) is greater than N (current position), so the expression will be 1 so far. Second is -(M<N)
:  min(max(K=1-(K=4)*8+M,28),52)→M>N-(M<N)+N→N
:  DS<(A,5)
:    Pt-Change(rand^96,1,Pic2)
:  End
:
:  .DRAW LOGO AND MENU
:  .Shift sandstorm
:  Z+1→Z
:  .Move rain down
:  Vertical +
:  .Backup rain image
:  conj({L6},{L1},708)
:  .Draw logo, sandstorm, menu, and cursor
:  sub(DM)
:  .Update screen
:  DispGraph
:  .Restore rain image
:  conj({L1},{L6},708)
:
:End
:
:
:.<MENU HANDLER>
:ClrHome
:
:
:If K-15 and (M-52)
:
:  .set menu bit
:  0→X
:
:  .If menu bit is 0
:  !If X
:
:    !If M-28
:      ClrDraw
:      ClrDraw{^r}
:      Fix 0
:      Fix 5
:      Text(30,28→M→N,Str6
:      Text(30,36,Str7
:      Text(30,44,Str8
:      Text(30,52,Str9
:      Fix 4
:    
:      DrawInv
:      StorePic
:      ClrDraw
:      Drawinv
:      1→A→Z
:    
:    
:      .<MENU LOOP>
:    
:    
:      Repeat getKey→K=9 and (M=N) or (K=15)
:    
:        .MOVE CURSOR
:        .Update the cursor destination and current position, although does not draw cursor
:        .there are three things being combining to get a new value of N. First, M>N will be 1 if M (destination) is greater than N (current position), so the expression will be 1 so far. Second is -(M<N), which will evaluate to -1 if M is less than N, so this subtracts 1 in this case. This can only be true if the first expression is false, so the expression will now equal 1 if M>N, -1 if M<N, or 0 is neither are true (M=N). This offset is then applied to N, either moving N in the appropriate direction towards M or, if N already equals M, not changing it at all.
:        min(max(K=1-(K=4)*8+M,28),52)→M>N-(M<N)+N→N
:    
:        .ADD RAIN
:        .Add a new rain sprite every 5 iterations of the menu loop
:        DS<(A,5)
:          Pt-Change(rand^96,1,Pic2)
:        End
:    
:        .DRAW LOGO AND MENU
:        .Shift sandstorm
:        Z+1→Z
:        Vertical +
:        conj({L6},{L1},708)
:        sub(DM)
:        DispGraph
:        conj({L1},{L6},708)
:    
:      End
:    End
:      .<MENU HANDLER>
:      !If M-28
:        sub(ADV)
:      End
:      !If M-36
:        sub(TM)
:      End
:      !If M-44
:        sub(CL)
:      End
:      !If M-52
:      End
:      .If menu bit is 1
:    Else
:      .If HELP
:      !If M-36
:        Disp Str2
:      End
:      .If SCORES
:      !If M-44
:        Disp Str3
:      End
:      .If QUIT
:      !If M-52
:        Disp Str4
:      End
:    End
:End
:      Return
:
:.<SUBROUTINES>
:.DRAW MENU
:Lbl DM
:.∙=bitwise and
:.□=bitwise xor
:.┼=bitwise or
:
:  .DRAW LOGO AND SANDSTORM
:  .Loop through the logo, 2 bytes at a time
:  For(B,0,148)
:    .Logo data - End state: Black logo image on white bg
:    .XOR 65535 - Inverts logo data - End state: White logo image on black bg
:    .AND Rain image - If either is white (0), output is white, so logo and rain remain white - End state: White logo image and white rain on black bg
:    .OR *Must wait for data in parentheses to be parsed* :
:      .Sandstorm garbage
:      .AND Logo data - This is the original, black on white logo. For the outside of the logo text, which is white (0), all ANDs will result in staying white (no change, so outside of logo text is unaffected) - The black text of the logo is all black (1), so the end state will be determined by the random data of the sandstorm - End state: Random black/white image on white bg
:    .OR ^ - The only areas of ^ which can be black are the logo text, so everything outside the logo text will be unaffected, while areas inside (previously white) will take on the random sandstorm image - End state: Sandstorm logo image and white rain on black bg
:    .→ Buffer
:    {B*2+Pic1}{^r}→D□65535∙{B*2+{L6}→C}{^r}┼({B*2+Z}{^r}∙D)→{C}{^r}
:  End
:
:  .DRAW MENU ITEMS
:  .Loop through the menu image, 2 bytes at a time
:  For(B,168,353)
:    .Menu image - End state: White text on black bg
:    .AND Rain image - If either is white (0 - menu text and rain droplets), result will be white (0) - End state: White menu items and rain on black bg
:    .→ Buffer
:    {B*2+{L3}}{^r}∙{B*2+{L6}→C}{^r}→{C}{^r}
:  End
:
:  .DRAW CURSOR
:  .Draw black cursor, turning any rain that might have been there black
:  Pt-On(22,N,Pic3)
:  .Invert cursor, turning cursor white
:  Pt-Change(22,N,Pic3)
:
:Return
:
:Lbl ADV
:  ClrDraw
:  ClrDraw{^r}
:  Disp Str6
:Return
:Lbl TM
:  ClrDraw
:  ClrDraw{^r}
:  Disp Str7
:Return
:Lbl CL
:  ClrDraw
:  ClrDraw{^r}
:  Disp Str8
:Return
:
:
:.<VARIABLES>
:.A=Counter to add rain
:.B=Temp loop variable for Lbl DM
:.C=Temp (buffer)
:.D=Temp (pic1 data)
:.K=getKey
:.M=Menu cursor destination
:.N=Menu cursor current display position
:.X=current menu bit
:.Z=Sandstorm offset
:.L1=Rain image backup
:.L3=Menu items image
:.L6=Rain image
« Last Edit: August 16, 2010, 07:04:08 pm by Snake X »
Loved this place, still the best producers of power metal, and sparked my dreams of coding.

Offline Runer112

  • Project Author
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2289
  • Rating: +639/-31
    • View Profile
Re: Project Snake X - help
« Reply #62 on: August 16, 2010, 07:58:05 pm »
Notice a problem?

Code: [Select]
:.<MENU HANDLER>
:ClrHome
:
:
:If K-15 and (M-52)
:
:  .set menu bit
:  0→X
:
:  .If menu bit is 0
:  !If X
« Last Edit: August 16, 2010, 07:58:37 pm by Runer112 »

Offline Snake X

  • Ancient Veteran
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 810
  • Rating: +33/-8
    • View Profile
Re: Project Snake X - help
« Reply #63 on: August 16, 2010, 08:06:10 pm »
ohh, the ! shouldn't be there, should it
edit: that would make it work.. but not the second menu.. ill work on that
edit 2: This should be COMPLETELY working. Idk why it isn't because all if's and ends are all tied together and I made sure of that through and through over and under, in and out times 2. I'll even make sure this is correct before i click the save button for this edit to show up
Code: [Select]
:If K-15 and (M-52)
:
:  0→X
:  If X=0
:   
:    !If M-28
:   
:      ClrDraw
:      ClrDraw{^r}
:      Fix 0
:      Fix 5
:      Text(30,28→M→N,Str6
:      Text(30,36,Str7
:      Text(30,44,Str8
:      Text(30,52,Str9
:      Fix 4 
:      DrawInv
:      StorePic
:      ClrDraw
:      DrawInv
:      1→A→Z
:     
:      Repeat getKey→K=9 and (M=N) or (K=15)
:        min(max(K=1-(K=4)*8+M,28),52)→M>N-(M<N)+N→N
:     
:        DS<(A,5)
:          Pt-Change(rand^96,1,Pic2)
:        End
:     
:        Z+1→Z
:        Vertical +
:        conj({L6},{L1},708)
:        sub(DM)
:        DispGraph
:        conj({L1},{L6},708)
:      End
:     
:      !If M-28
:        sub(ADV)
:      End
:      !If M-36
:        sub(TM)
:      End
:      !If M-44
:        sub(CL)
:      End
:      !If M-52
:      End
:    End
:     
:    If X=1
:      .If HELP
:      !If M-36
:        Disp Str2
:      End
:      .If SCORES
:      !If M-44
:        Disp Str3
:      End
:      .If QUIT
:      !If M-52
:        Disp Str4
:      End
:    End
:End
:      Return
« Last Edit: August 16, 2010, 08:32:36 pm by Snake X »
Loved this place, still the best producers of power metal, and sparked my dreams of coding.

Offline Runer112

  • Project Author
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2289
  • Rating: +639/-31
    • View Profile
Re: Project Snake X - help
« Reply #64 on: August 16, 2010, 08:47:38 pm »
Notice a problem?

Code: [Select]
:.<MENU HANDLER>
:ClrHome
:
:
:If K-15 and (M-52)
:
:  .set menu bit
:  0→X
:
:  .If menu bit is 0
:  !If X

Let me try to more accurately pin down the problem...

Code: [Select]
:  .set menu bit
:  0→X
:
:  .If menu bit is 0
:  !If X

Offline Snake X

  • Ancient Veteran
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 810
  • Rating: +33/-8
    • View Profile
Re: Project Snake X - help
« Reply #65 on: August 16, 2010, 09:04:37 pm »
Runer, I don't see what your getting at to be honest. I have inverted the bits (:1->x :.if bit is 1 :If X), flipping them both ways (:1->X :!If X) (0->X :If X) and none of those 3 options have worked. I know its the most obvious thing for you, but for me, it's not.
Loved this place, still the best producers of power metal, and sparked my dreams of coding.

Offline calcdude84se

  • Needs Motivation
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2272
  • Rating: +78/-13
  • Wondering where their free time went...
    • View Profile
Re: Project Snake X - help
« Reply #66 on: August 16, 2010, 09:13:01 pm »
What he's saying is that you're setting it and immediately after checking it.
Either eliminate the condition or move the 1->X to where it belongs, outside the first conditional. (Almost certainly the latter)
"People think computers will keep them from making mistakes. They're wrong. With computers you make mistakes faster."
-Adam Osborne
Spoiler For "PartesOS links":
I'll put it online when it does something.

Offline Snake X

  • Ancient Veteran
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 810
  • Rating: +33/-8
    • View Profile
Re: Project Snake X - help
« Reply #67 on: August 16, 2010, 10:04:23 pm »
Ok. I put the bit outside of the !If K-15 and (M-52). I found out if I set it to 1, the first menu works. If I set it to 0, the second menu works. I can't seem to get both of them to work together
Loved this place, still the best producers of power metal, and sparked my dreams of coding.

Offline Runer112

  • Project Author
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2289
  • Rating: +639/-31
    • View Profile
Re: Project Snake X - help
« Reply #68 on: August 17, 2010, 12:19:45 am »
*Facepalm*





EDIT: See http://ourl.ca/6612/110367
« Last Edit: August 17, 2010, 03:35:31 pm by Runer112 »

Offline Snake X

  • Ancient Veteran
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 810
  • Rating: +33/-8
    • View Profile
Re: Project Snake X - help
« Reply #69 on: August 17, 2010, 07:01:23 am »
What he's saying is that you're setting it and immediately after checking it.
Either eliminate the condition or move the 1->X to where it belongs, outside the first conditional. (Almost certainly the latter)
wait are you sure it was 1->x?
Loved this place, still the best producers of power metal, and sparked my dreams of coding.

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Project Snake X - help
« Reply #70 on: August 17, 2010, 09:03:34 am »
*Facepalm*
Sorry but I had to rate down this comment as it was rude and uncalled for. You know Omnimaga is supposed to be free from hostility towards new members, right? If you cannot help Snake X in a respectful manner, you should just ignore his questions and let someone else do it. Not that he was even supposed to receive this much help anyway (even less posting this much source code for his program), because now his program is disqualified from the Axe contest.

Offline calcdude84se

  • Needs Motivation
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2272
  • Rating: +78/-13
  • Wondering where their free time went...
    • View Profile
Re: Project Snake X - help
« Reply #71 on: August 17, 2010, 12:46:12 pm »
Oh, disqualified? Poor Snake_X :(
Well, we can still help you make a great game, even if not for the contest :)
"People think computers will keep them from making mistakes. They're wrong. With computers you make mistakes faster."
-Adam Osborne
Spoiler For "PartesOS links":
I'll put it online when it does something.

Offline LordConiupiter

  • LV6 Super Member (Next: 500)
  • ******
  • Posts: 339
  • Rating: +3/-0
  • Just one of the thousands of Axe-fans...
    • View Profile
Re: Project Snake X - help
« Reply #72 on: August 17, 2010, 03:19:01 pm »
Oh, disqualified? Poor Snake_X :(
Well, we can still help you make a great game, even if not for the contest :)
when he wants to continue, I'm willing to help too,  cuz it looks like it's gonna be a great game!
everytime that I was down, you would always come around, and get my feedback on the ground. (modified part from 'Seasons in the sun')

No matter how many errors are bothering you, always try to stay rel-Axe!

The HoMM project will be resumed as soon Axe 1.0.0 will be released!
Projects:
Code: [Select]
HoMM:   [==--------]    Project 'resumed': I'm suffering overwhelming new ideas being popped up in my dreams :P
tiDE:   [----------]    Explored and understood the main part of the code: just started writing a Tokenizer.



password of the week: uvanapererubupa (Any pronunciation is the right one ;) )   :D click me, and you'll be raided :D

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Project Snake X - help
« Reply #73 on: August 17, 2010, 03:23:34 pm »
Yeah same, or he could create a spinoff for the contest and release Snake later. He would still get a lower originality score if he reused a lot of code (and the title screen) but it would be eligible if he did not post that many code.

Plus I warned him on IRC a while ago, not to mention Runer112 did on this topic at the beginning.

Offline Runer112

  • Project Author
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2289
  • Rating: +639/-31
    • View Profile
Re: Project Snake X - help
« Reply #74 on: August 17, 2010, 03:33:28 pm »
I'm sorry about the "facepalm" post, I was just a little disappointed that you were taking a while to understand what I was getting at. It was uncalled for.

Anyways, it looks like I guided this project right into the garbage can. I'm sorry Snake X. :'(