AutoHotkey Community

It is currently May 27th, 2012, 1:04 pm

All times are UTC [ DST ]




Post new topic Reply to topic  [ 10 posts ] 
Author Message
PostPosted: December 14th, 2011, 3:33 am 
Offline

Joined: December 18th, 2009, 6:08 pm
Posts: 63
this is a clone of the old atari 2600 game, dodge em.. needs some cleaning up, but figured i would post it before i lost all interest in it.

use arrows to move, and space for gas pedal.. for you whipper snappers, you can change 1 lane when going fast, or 2 when going slow..
Code:
;dodge_ahk by Ton80
SetBatchLines, -1
#NoEnv
#SingleInstance, Force
CoordMode, Tooltip, Screen
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen
boardWidth := A_ScreenWidth, boardheight := A_ScreenHeight
gosub, Initialize_Color_Values
gosub, Initialize_Variables
gosub, Initialize_Graphics
gosub, Initialize_Board
gosub, Initialize_Fuel
gosub, Update_Screen
gosub, Main_Loop
return

Main_Loop:
Loop
   {
      Change_Delay_Player := A_TickCount - Car_Player_Last_Change_Lane
      Car_Player_Speed := Car_Player_Speed_Slow
      Loop, Parse, Player_1_Controls, csv
         If (GetKeyState(%A_Loopfield%, "P"))
               If (A_Loopfield = "Player_1_Up" or  A_Loopfield = "Player_1_Down" or A_Loopfield = "Player_1_Left" or A_Loopfield = "Player_1_Right") && !(Change_Delay_Player > 500)
                  continue
               else gosub, %A_LoopField%
      gosub, Car_Player_Move
      gosub, Car_Player_Offset
      gosub, Car_Computer_Move
      gosub, Car_Computer_Offset
      gosub, Update_Screen
      gosub, Car_Fuel_Collision
      gosub, Car_Player_Wall_Collision
      gosub, Car_Computer_Wall_Collision
      gosub, Car_Computer_Switch_Lanes
      gosub, Car_Car_Collision
   }
return

Player_1_Up:
if (DllCall("RectInRegion", "Int", Vertical_Passage, "UInt", &ptCar_Player)) & !(Car_Player_Direction = 1) & !(Car_Player_Direction = 3)
   {
      If (Car_Player_Y > Boardheight / 2 )
         {
            car_Player_Lane := car_Player_speed = car_player_speed_slow ? car_player_lane += 2 : car_player_lane +=1
            gosub, Player_1_Check_Bounds
            Car_Player_Y :=  Lane%Car_Player_Lane%Y2 - Car_Height / 2
         }
      else
         {
            car_Player_Lane := car_Player_speed = car_player_speed_slow ? car_player_lane -= 2 : car_player_lane -=1
            gosub, Player_1_Check_Bounds
            Car_Player_Y := Lane%Car_Player_Lane%Y1 - Car_Height / 2
         }
      gosub, Car_Player_Offset
      Car_Player_Last_Change_Lane := A_TickCount
   }
return

Player_1_Down:
if (DllCall("RectInRegion", "Int", Vertical_Passage, "UInt", &ptCar_Player)) & !(Car_Player_Direction = 3) & !(Car_Player_Direction = 1)
   {
      If (Car_Player_Y > Boardheight / 2 )
         {
            car_Player_Lane := car_Player_speed = car_player_speed_slow ? car_player_lane -= 2 : car_player_lane -=1
            gosub, Player_1_Check_Bounds
            Car_Player_Y := Lane%Car_Player_Lane%Y2 - Car_Height / 2
         }
      else
         {
            car_Player_Lane := car_Player_speed = car_player_speed_slow ? car_player_lane += 2 : car_player_lane +=1
            gosub, Player_1_Check_Bounds
            Car_Player_Y := Lane%Car_Player_Lane%Y1 - Car_Height / 2
         }
      gosub, Car_Player_Offset
      Car_Player_Last_Change_Lane := A_TickCount
   }
return

Player_1_Right:
If (DllCall("RectInRegion", "Int", Horizontal_Passage, "UInt", &ptCar_Player)) & !(Car_Player_Direction = 2) & !(Car_Player_Direction = 4)
   {
   If (Car_Player_X > BoardWidth / 2 )
         {
            car_Player_Lane := car_Player_speed = car_player_speed_slow ? car_player_lane -= 2 : car_player_lane -=1
            gosub, Player_1_Check_Bounds
            Car_Player_X := Lane%Car_Player_Lane%X2 - Car_Height / 2
         }
      else
         {
            car_Player_Lane := car_Player_speed = car_player_speed_slow ? car_player_lane += 2 : car_player_lane +=1
            gosub, Player_1_Check_Bounds
            Car_Player_X := Lane%Car_Player_Lane%X1 - Car_Height / 2
         }
      gosub, Car_Player_Offset
      Car_Player_Last_Change_Lane := A_TickCount
   }
return

Player_1_Left:
If (DllCall("RectInRegion", "Int", Horizontal_Passage, "UInt", &ptCar_Player))  & !(Car_Player_Direction = 4) & !(Car_Player_Direction = 2)
   {
   If (Car_Player_X > BoardWidth / 2 )
         {
            car_Player_Lane := car_Player_speed = car_player_speed_slow ? car_player_lane += 2 : car_player_lane +=1
            gosub, Player_1_Check_Bounds
            Car_Player_X := Lane%Car_Player_Lane%X2 - Car_Height / 2
         }
      else
         {
            car_Player_Lane := car_Player_speed = car_player_speed_slow ? car_player_lane -= 2 : car_player_lane -=1
            gosub, Player_1_Check_Bounds
            Car_Player_X := Lane%Car_Player_Lane%X1 - Car_Height / 2
         }
         gosub, Car_Player_Offset
         Car_Player_Last_Change_Lane := A_TickCount
   }
return

Player_1_Check_Bounds:
Car_Player_Lane < 1 ? Car_Player_Lane := 1 : Car_Player_Lane > 4 ? Car_Player_Lane := 4
return

Player_1_Fast:
Car_Player_Speed := Car_Player_Speed_Fast
return

Car_Player_Move:
Car_Player_Elapsed_Time := (A_TickCount - Car_Player_Last_Move_Time) / 1000
d := Car_Player_Direction = 1 ? Car_Player_Y -= Round(Car_Player_Speed * Car_Player_Elapsed_Time) : Car_Player_Direction = 2 ? Car_Player_X += Round(Car_Player_Speed * Car_Player_Elapsed_Time) : Car_Player_Direction = 3 ? Car_Player_Y += Round(Car_Player_Speed * Car_Player_Elapsed_Time) : Car_Player_Direction = 4 ? Car_Player_X -= Round(Car_Player_Speed * Car_Player_Elapsed_Time)
d :=
return

Car_Computer_Move:
Car_Computer_Elapsed_Time := (A_TickCount - Car_Computer_Last_Move_Time) / 1000
d := Car_Computer_Direction = 1 ? Car_Computer_Y -= Round(Car_Computer_Speed * Car_Computer_Elapsed_Time) : Car_Computer_Direction = 2 ? Car_Computer_X += Round(Car_Computer_Speed * Car_Computer_Elapsed_Time) : Car_Computer_Direction = 3 ? Car_Computer_Y += Round(Car_Computer_Speed * Car_Computer_Elapsed_Time) : Car_Computer_Direction = 4 ? Car_Computer_X -= Round(Car_Computer_Speed * Car_Computer_Elapsed_Time)
d :=
return

Car_Player_Offset:
Car_Player_x2:= Car_Player_X + Car_Width,Car_Player_Y2:= Car_Player_Y + Car_Height,Car_Player_Last_Move_Time:= A_TickCount
NumPut(Car_Player_X, ptCar_Player, 0)
NumPut(Car_Player_Y, ptCar_Player, 4)
NumPut(Car_Player_X2, ptCar_Player, 8)
NumPut(Car_Player_Y2, ptCar_Player, 12)
return

Car_Computer_Offset:
Car_Computer_x2 := Car_Computer_X + Car_Width,Car_Computer_Y2 := Car_Computer_Y + Car_Height,Car_Computer_Last_Move_Time := A_TickCount
NumPut(Car_Computer_X, ptCar_Computer, 0)
NumPut(Car_Computer_Y, ptCar_Computer, 4)
NumPut(Car_Computer_X2, ptCar_Computer, 8)
NumPut(Car_Computer_Y2, ptCar_Computer, 12)
return

Car_Computer_Switch_Lanes:
If (A_TickCount - Car_Computer_Last_Change_Lane < Car_Computer_Reaction_Time)
   return
if (Car_Computer_Lane < Car_Player_Lane)
   {
      If (Car_Computer_Y < boardheight / 2) && (DllCall("RectInRegion", "Int", Vertical_Passage, "UInt", &ptCar_Computer))
         Car_Computer_Lane ++,Car_Computer_Y:= Lane%Car_Computer_Lane%Y1 - Car_Height / 2,Car_Computer_Last_Change_Lane := A_TickCount
      Else If (Car_Computer_Y > boardheight / 2) && (DllCall("RectInRegion", "Int", Vertical_Passage, "UInt", &ptCar_Computer))
         Car_Computer_Lane ++,Car_Computer_Y := Lane%Car_Computer_Lane%Y2 - Car_Height / 2,Car_Computer_Last_Change_Lane := A_TickCount
      Else If (Car_Computer_X < boardWidth / 2) && (DllCall("RectInRegion", "Int", Horizontal_Passage, "UInt", &ptCar_Computer))
         Car_Computer_Lane ++,Car_Computer_X := Lane%Car_Computer_Lane%X1 - Car_Width / 2,Car_Computer_Last_Change_Lane := A_TickCount
      Else If (Car_Computer_X > boardWidth / 2) && (DllCall("RectInRegion", "Int", Horizontal_Passage, "UInt", &ptCar_Computer))
         Car_Computer_Lane ++,Car_Computer_X := Lane%Car_Computer_Lane%X2 - Car_Width / 2,Car_Computer_Last_Change_Lane := A_TickCount
      Else
         return
      gosub, Car_Computer_Offset
   }
Else if (Car_Computer_Lane > Car_Player_Lane)
   {
      If (Car_Computer_Y < boardheight / 2) && (DllCall("RectInRegion", "Int", Vertical_Passage, "UInt", &ptCar_Computer))
         Car_Computer_Lane --,Car_Computer_Y := Lane%Car_Computer_Lane%Y1 - Car_Height / 2,Car_Computer_Last_Change_Lane := A_TickCount
      Else If (Car_Computer_Y > boardheight / 2) && (DllCall("RectInRegion", "Int", Vertical_Passage, "UInt", &ptCar_Computer))
         Car_Computer_Lane --,Car_Computer_Y := Lane%Car_Computer_Lane%Y2 - Car_Height / 2,Car_Computer_Last_Change_Lane := A_TickCount
      Else If (Car_Computer_X < boardWidth / 2) && (DllCall("RectInRegion", "Int", Horizontal_Passage, "UInt", &ptCar_Computer))
         Car_Computer_Lane --,Car_Computer_X := Lane%Car_Computer_Lane%X1 - Car_Width / 2,Car_Computer_Last_Change_Lane := A_TickCount
      Else If (Car_Computer_X > boardWidth / 2) && (DllCall("RectInRegion", "Int", Horizontal_Passage, "UInt", &ptCar_Computer))
         Car_Computer_Lane --,Car_Computer_X := Lane%Car_Computer_Lane%X2 - Car_Width / 2,Car_Computer_Last_Change_Lane := A_TickCount
      Else
         return
      gosub, Car_Computer_Offset
   }

return

;collisions
Car_Car_Collision:
if (DllCall("IntersectRect", "UInt", &ptCrash, "UInt", &ptCar_Player, "UInt", &ptCar_Computer))
      {
         gosub, Screen_Flash_Crash
         Player_Lives --
         If Player_Lives <= 0
            gosub Game_Over
         else
            gosub, Reset_Board
      }
return

Car_Fuel_Collision:
Loop, 128
   {
      If DllCall("RectInRegion", "Int", Fuel_Pellet_%A_Index%, "Int", &ptCar_Player)
         {
            DllCall("DeleteObject", "Int", Fuel_Pellet_%A_Index%)
            Player_Score += Fuel_Points,Fuel_Pellets_Count --
               If (Fuel_Pellets_Count = 0)
                  {
                     Computer_Skill < 5 ? Computer_Skill ++ : Computer_Skill := 5,Player_Score += 100 * Player_Level,Player_Level ++
                     gosub, Screen_Flash_Win
                     gosub, Reset_Board
                  }
         }
   }
return

Car_Player_Wall_Collision:
If (Car_Player_Direction = 1) && (Car_Player_Y <= Lane%Car_Player_Lane%Y1 - Car_Width / 2)
   Car_Player_Direction := 4, Car_Player_Y   := Lane%Car_Player_Lane%Y1 - Car_Width /2
Else If (Car_Player_Direction = 2) && (Car_Player_X >= Lane%Car_Player_Lane%X2 - Car_Width / 2)
   Car_Player_Direction := 1, Car_Player_X   := Lane%Car_Player_Lane%X2 - Car_Width /2
Else If (Car_Player_Direction = 3) && (Car_Player_Y >= Lane%Car_Player_Lane%Y2 - Car_Width / 2)
   Car_Player_Direction := 2, Car_Player_Y   := Lane%Car_Player_Lane%Y2 - Car_Width /2
Else If (Car_Player_Direction = 4) && (Car_Player_X <= Lane%Car_Player_Lane%X1 - Car_Width / 2)
   Car_Player_Direction := 3, Car_Player_X   := Lane%Car_Player_Lane%X1 - Car_Width /2
return

Car_Computer_Wall_Collision:
If (Car_Computer_Direction = 1) && (Car_Computer_Y <= Lane%Car_Computer_Lane%Y1 - Car_Width / 2)
   Car_Computer_Direction := 2, Car_Computer_Y   := Lane%Car_Computer_Lane%Y1 - Car_Width /2
Else If (Car_Computer_Direction = 2) && (Car_Computer_X >= Lane%Car_Computer_Lane%X2 - Car_Width / 2)
   Car_Computer_Direction := 3, Car_Computer_X   := Lane%Car_Computer_Lane%X2 - Car_Width /2
Else If (Car_Computer_Direction = 3) && (Car_Computer_Y >= Lane%Car_Computer_Lane%Y2 - Car_Width / 2)
   Car_Computer_Direction := 4, Car_Computer_Y   := Lane%Car_Computer_Lane%Y2 - Car_Width /2
Else If (Car_Computer_Direction = 4) && (Car_Computer_X <= Lane%Car_Computer_Lane%X1 - Car_Width / 2)
   Car_Computer_Direction := 1, Car_Computer_X   := Lane%Car_Computer_Lane%X1 - Car_Width /2
return

;display
game_over:
MsgBox,0,Dodge AHK, % "GAME OVER" . "`r`n`r`nScore : " . Player_Score
sleep, 3000
gosub, cleanup
Reload
return

Reset_Board:
Car_Computer_Reaction_Time := 2600 - (Computer_Skill * 500)
sleep, 1000
gosub, initialize_fuel
gosub, Car_Player_Offset
gosub, Car_Computer_Offset
Car_Player_X:= Car_Player_X_Start,Car_Player_Y:= Car_Player_Y_Start,Car_Player_Direction:= 2,Car_Player_Lane:= 1,Car_Player_Last_Move_Time := A_TickCount
Car_Computer_X:= Car_Computer_X_Start,Car_Computer_Y:= Car_Computer_Y_Start,Car_Computer_Direction:= 4,Car_Computer_Lane:= 1,Car_Computer_Last_Move_Time:= A_TickCount
return

Score_Display:
Lives_Display:= "Lives:" Player_Lives - 1,Level_Display:= "Level:" Player_Level
DllCall("TextOut", "Int", hdcMem, "UInt", boardwidth * .1, "UInt", 0, "UInt", &Player_Score, "UInt", StrLen(Player_Score))
DllCall("TextOut", "Int", hdcMem, "UInt", boardwidth * .1, "UInt", boardheight * .92, "UInt", &Lives_Display, "UInt", StrLen(Lives_Display))
DllCall("TextOut", "Int", hdcMem, "UInt", BoardWidth *.6, "UInt", boardheight * .92, "UInt", &Level_Display, "UInt", StrLen(Level_Display))
return

Update_Screen:
gosub, draw_fuel
gosub, Score_Display
DllCall("FillRect", "Int", hdcMem, "UInt", &ptCar_Player, "int", brush_red)
DllCall("FrameRect", "Int", hdcMem, "UInt", &ptCar_Player, "int", brush_yellow)
DllCall("FillRect", "Int", hdcMem, "UInt", &ptCar_Computer, "int", brush_Blue)
DllCall("FrameRect", "Int", hdcMem, "UInt", &ptCar_Computer, "int", brush_yellow)
DllCall("FillRgn", "Int", HdcMem, "Int", Wall, "Int", Brush_Purple)
DllCall("FillRgn", "Int", HdcMem, "Int", Car_Computer, "Int", Brush_blue)
DllCall("FrameRgn", "Int", HdcMem, "Int", Car_Computer, "Int", Brush_yellow, "Int", 1, "Int", 1)
DllCall("FrameRgn", "Int", HdcMem, "Int", Wall, "Int", Brush_Red, "Int", 2, "Int", 2)
DllCall("BitBlt", "uint", hdcWin, "int", 0, "int", 0, "int", boardWidth, "int", boardHeight, "uint", hdcMem, "int", 0, "int", 0, "uint", 0xCC0020)
DllCall("FillRect", "uint", hdcMem, "UInt", &ptWin, "uint", Brush_BackGround)
return

Screen_Flash_Crash:
Loop, 30
   {
      DllCall("FillRect", "Int", hdcMem, "Int", &ptWin, "Int", Brush_White)
      gosub, update_Screen
      sleep, 5
   }
return

Screen_Flash_Win:
Loop, 100
   {
      DllCall("FillRect", "Int", hdcWin, "Int", &ptWin, "Int", Brush_White)
      gosub, update_Screen
      sleep, 5
   }
return

;setup
Initialize_Color_Values:
Green:= "0x008000",Silver:= "0xC0C0C0",Lime:= "0x00FF00",Gray:= "0x808080",Olive:= "0x008080", White:= "0xFFFFFF",Yellow:= "0x00FFFF",Maroon:= "0x000080",Navy:= "0x800000",Red   := "0x0000FF",Blue:= "0xFF0000",Purple:= "0x800080",Teal:= "0x808000",Fuchsia:= "0xFF00FF",Aqua:= "0xFFFF00",Black:= "0x000000",Brown:= "0x2A2AA5",RGN_AND:= 1,RGN_COPY:= 5,RGN_DIFF:= 4,RGN_OR:= 2,RGN_XOR:= 3
return

Initialize_Variables:
Track_width_feet:= 53,Track_height_feet:= 27,Feet_per_pixel := Track_width_feet / boardwidth
Car_Player_Speed_Slow := 20,Car_Player_Speed_Fast := 45,Car_Player_Speed_Slow /= feet_per_pixel,Car_Player_Speed_Fast /= feet_per_pixel,Car_Player_Speed := Car_Player_Speed_Slow
Car_Height := boardHeight * .056,Car_Width := boardHeight * .056
Car_Player_X_Start:= boardWidth * .552,Car_Player_Y_Start:= boardHeight * .838,Car_Player_X := Car_Player_X_Start,Car_Player_Y:= Car_Player_Y_Start,Car_Player_Direction:= 2,Car_Player_Lane:= 1,Player_Level:= 1
VarSetCapacity(ptCar_Player, 16,0)
VarSetCapacity(ptCrash, 16,0)
VarSetCapacity(ptCar_Computer, 16,0)
gosub, car_player_offset
Player_Lives:= 5,Player_Score:= 0,Fuel_Points:= 10
Player_1_Right:= "Right",Player_1_Left:= "Left",Player_1_Down:= "Down",Player_1_Up:= "Up",Player_1_Fast:= "Space",Toggle_Frame_Rate:= "F1"
Player_1_Controls := "Player_1_Fast,Player_1_Right,Player_1_Left,Player_1_Down,Player_1_Up,Toggle_Frame_Rate"
Car_Computer_Speed:= 30,Car_Computer_Speed /= feet_per_pixel,Car_Computer_X_Start:= boardwidth * .418,Car_Computer_Y_Start:= boardheight * .838,Car_Computer_X:= Car_Computer_X_Start,Car_Computer_Y:= Car_Computer_Y_Start,Car_Computer_Direction:= 4,Car_Computer_Lane:= 1,Car_Computer_Reaction_Time:= 2000,Computer_Skill:= 1,Fuel_Pellet_Size:= boardwidth * .01
gosub,car_computer_offset
Lane1X1 := boardwidth * .039,Lane1X2 := boardwidth * .961,Lane1Y1 := boardheight * .139,Lane1Y2 := boardheight * .861
Lane2X1 := boardwidth * .102,Lane2X2 := boardWidth * .898,Lane2Y1 := boardheight * .222,Lane2Y2 := boardheight * .778
Lane3X1 := boardWidth * .164,Lane3X2 := boardWidth * .836,Lane3Y1 := boardheight * .306,Lane3Y2 := boardheight * .694
Lane4X1 := boardWidth * .227,Lane4X2 := boardWidth * .773,Lane4Y1 := boardheight * .389,Lane4Y2 := boardheight * .611
Car_Player_Elapsed_Time := 0, Car_Player_Last_Move_Time := A_TickCount,Car_Player_Last_Change_Lane := A_TickCount,Car_Computer_Last_Change_Lane := A_TickCount,Car_Computer_Last_Move_Time := A_TickCount
return

Initialize_Graphics:
VarSetCapacity(ptWin, 16, 0)
NumPut(boardWidth, ptWin, 8) , NumPut(boardHeight, ptWin, 12)
gui,1: color, black
gui,show, h%BoardHeight% w%BoardWidth% x-3 y-22
hdcWin := DllCall("GetDC", "UInt", hwnd:=WinExist("A")),hdcMem := DllCall("CreateCompatibleDC", "UInt", hdcWin),hbm := DllCall("CreateCompatibleBitmap", "uint", hdcWin, "int", boardWidth, "int", boardHeight), Pen := DllCall("CreatePen", "UInt", 0, "UInt", 6, "UInt", Green)
DllCall("SelectObject", "uint", hdcMem, "uint", hbm)
DllCall("SelectObject","UInt", hdcMem, "UInt", Pen)
DllCall("SelectObject","UInt", hdcWin, "UInt", Pen)
Brush_BackGround:= DllCall("CreateSolidBrush", "Int", Black),Brush_Red:= DllCall("CreateSolidBrush", "Int", Red),Brush_Green:= DllCall("CreateSolidBrush", "Int", Green),Brush_Blue:= DllCall("CreateSolidBrush", "Int", Blue),Brush_Maroon:= DllCall("CreateSolidBrush", "Int", Maroon),Brush_Purple:= DllCall("CreateSolidBrush", "Int", Purple),Brush_Yellow:= DllCall("CreateSolidBrush", "Int", Yellow),font_width:= boardwidth * .05,font_height:= boardheight *.06,hFont:=DllCall("CreateFont", "int", font_width, "int",font_height, "int", 0, "int", 0, "int", 1000
  ,"uint",0,"uint",0,"uint",0,"uint",1,"uint",0,"uint",0,"uint",0,"uint",0,"str", "Comic Sans MS Bold")
DllCall("SelectObject", "uint", hdcMem, "uint", hFont)
DllCall("SetBkColor", "Int", hdcMem, "Int", black)
DllCall("SetTextColor", "Int", hdcMem, "Int", green)
return

Initialize_Board:
Wall:= DllCall("CreateRectRgn", "Int", 0, "Int", boardheight * .09, "Int", boardwidth, "Int", boardheight * .91),Wall2:= DllCall("CreateRectRgn", "Int", boardwidth * .015, "Int", boardheight * .1, "Int", boardwidth *.985, "Int", boardheight *.9)
DllCall("CombineRgn", "Int", Wall, "Int", Wall, "Int", Wall2, "Int", rgn_diff)
DllCall("DeleteObject", "Int", Wall2)
DllCall("DeleteObject", "Int", Wall2)
Wall2:= DllCall("CreateRectRgn", "Int", boardwidth *.0625, "Int", boardheight *.176, "Int", boardwidth * .938, "Int", boardheight *.824),Wall3 := DllCall("CreateRectRgn", "Int", boardwidth *.0781, "Int", boardheight *.185, "Int", boardwidth * .922, "Int", boardheight *.815)
DllCall("CombineRgn", "Int", Wall2, "Int", Wall2, "Int", Wall3, "Int", rgn_xor)
DllCall("CombineRgn", "Int", Wall, "Int", Wall, "Int", Wall2, "Int", rgn_xor)
DllCall("DeleteObject", "Int", Wall2)
DllCall("DeleteObject", "Int", Wall3)
Wall2:= DllCall("CreateRectRgn", "Int", boardwidth * .125, "Int", boardheight * .259, "Int", boardwidth *.875, "Int", boardheight * .741),Wall3 := DllCall("CreateRectRgn", "Int", boardwidth * .141, "Int", boardheight * .269, "Int", boardwidth *.859, "Int", boardheight * .731)
DllCall("CombineRgn", "Int", Wall2, "Int", Wall2, "Int", Wall3, "Int", rgn_xor)
DllCall("CombineRgn", "Int", Wall, "Int", Wall, "Int", Wall2, "Int", rgn_xor)
DllCall("DeleteObject", "Int", Wall2)
DllCall("DeleteObject", "Int", Wall3)
Wall2:= DllCall("CreateRectRgn", "Int", boardwidth * .188, "Int", boardheight * .343, "Int", boardwidth * .813, "Int", boardheight * .657),Wall3 := DllCall("CreateRectRgn", "Int", boardwidth * .203, "Int", boardheight * .352, "Int", boardwidth * .797, "Int", boardheight * .648)
DllCall("CombineRgn", "Int", Wall2, "Int", Wall2, "Int", Wall3, "Int", rgn_xor)
DllCall("CombineRgn", "Int", Wall, "Int", Wall, "Int", Wall2, "Int", rgn_xor)
DllCall("DeleteObject", "Int", Wall2)
DllCall("DeleteObject", "Int", Wall3)
Vertical_Passage:= DllCall("CreateRectRgn", "Int", boardwidth * .448, "Int", 0, "Int", boardwidth * .552, "Int", boardheight)
DllCall("CombineRgn", "Int", Wall, "Int", Wall, "Int", Vertical_Passage, "Int", rgn_diff)
DllCall("DeleteObject", "Int", Vertical_Passage)
Vertical_Passage:= DllCall("CreateRectRgn", "Int", boardwidth / 2 - car_width / 2, "Int", 0, "Int", boardwidth / 2 + car_width / 2, "Int", boardheight), Horizontal_Passage := DllCall("CreateRectRgn", "Int", 0, "Int", boardHeight *.407, "Int", boardwidth, "Int", boardheight * .593)
DllCall("CombineRgn", "Int", Wall, "Int", Wall, "Int", Horizontal_Passage, "Int", rgn_diff)
DllCall("DeleteObject", "Int", Horizontal_Passage)
Horizontal_Passage := DllCall("CreateRectRgn", "Int", 0, "Int", boardHeight / 2 - car_height / 2, "Int", boardwidth, "Int", boardheight / 2 + car_height / 2),Wall2 := DllCall("CreateRectRgn", "Int", boardwidth * .250, "Int", boardheight * .426, "Int", boardwidth * .750, "Int", boardheight * .574),Wall3 := DllCall("CreateRectRgn", "Int", boardwidth * .266, "Int", boardheight * .435, "Int", boardwidth * .734, "Int", boardheight * .565)
DllCall("CombineRgn", "Int", Wall2, "Int", Wall2, "Int", Wall3, "Int", rgn_xor)
DllCall("CombineRgn", "Int", Wall, "Int", Wall, "Int", Wall2, "Int", rgn_xor)
DllCall("DeleteObject", "Int", Wall2)
DllCall("DeleteObject", "Int", Wall3)
return

Draw_Fuel:
Loop, 128
      {
         DllCall("FillRgn", "Int", hdcMem, "Int", Fuel_Pellet_%A_Index%, "Int", brush_yellow)
         if (fuel_pellet_size > 5)
            DllCall("FrameRgn", "Int", hdcMem, "Int", Fuel_Pellet_%A_Index%, "Int", brush_maroon, "Int", 2, "Int", 2)
      }
return

Initialize_Fuel:
Fuel_X1:= Lane1X1,Fuel_X2:= Lane1X2,Fuel_Space:= (Fuel_X2 - Fuel_X1) / 15.2,,Pellet_Number:= 1
Loop, 2
   {
      Ypos := A_Index
      Loop, 4
         {
            Fuel_Y := Lane%A_Index%Y%Ypos% - (Fuel_Pellet_Size / 2)
            Loop, 16
                  Fuel_Pellet_%Pellet_Number% := DllCall("CreateEllipticRgn", "Int", Fuel_X1, "Int", Fuel_Y, "Int", Fuel_X1 + Fuel_Pellet_Size, "Int", Fuel_Y + Fuel_Pellet_Size), Fuel_X1 += Fuel_Space,Pellet_Number ++
            Fuel_X1 := Lane1X1
         }   
   }
dPellet = 8,9,24,25,40,41,56,57,72,73,88,89,104,105,120,121
Loop, parse, dpellet, csv
   DllCall("DeleteObject", "Int", Fuel_Pellet_%A_Loopfield%)
Fuel_Pellets_Count := 112
return

GuiClose:
esc::
OnExit
gosub, Cleanup
exitapp

cleanup:
objects = Wall,Vertical_Passage,Horizontal_Passage,Pen,Brush_BackGround,Brush_Red,Brush_Green,Brush_Blue,Brush_Maroon,Brush_Purple,Brush_Yellow,hbm
loop, parse, objects, csv
   DllCall("DeleteObject", "Int", %A_Loopfield%)
DllCall("ReleaseDC", uint, hdcWin)
DllCall("ReleaseDC", uint, hdcMem)
Loop, 128
   DllCall("DeleteObject", "Int", Fuel_Pellet_%A_Index%)
return


edit : cleaned up code, shortend by almost 300 lines..


Last edited by ton80 on December 15th, 2011, 10:10 pm, edited 1 time in total.

Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 14th, 2011, 4:37 pm 
Offline

Joined: May 2nd, 2006, 11:16 pm
Posts: 800
Location: Greeley, CO
Nice.

_________________
Image
SoggyDog
Dwarf Fortress:
"The most intriguing game I've ever played."


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 15th, 2011, 1:31 am 
Offline

Joined: December 18th, 2009, 6:08 pm
Posts: 63
SoggyDog wrote:
Nice.



thanks SoggyDog.. you can run it in any size window.. even runs great at 100 x 200, so you can play at work :)

here's a screenshot..
Image


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 16th, 2011, 6:29 am 
Offline

Joined: December 18th, 2009, 6:08 pm
Posts: 63
tough crowd.. 20,990, level 11.. i was in the zone..


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 16th, 2011, 5:39 pm 
Offline

Joined: March 10th, 2008, 12:55 am
Posts: 1907
Location: Minnesota, USA
:shock: I can't even get past level 1 xD 2,066 points.

this is pretty fun!

_________________
rawr. be very afraid
*poke*
Note: My name is all lowercase for a reason.
"I think Bigfoot is blurry, that's the problem. It's not the photographer's fault, Bigfoot is blurry. So there's a large, out-of-focus monster roaming the countryside."


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: December 16th, 2011, 9:13 pm 
Offline

Joined: December 18th, 2009, 6:08 pm
Posts: 63
tidbit wrote:
I can't even get past level 1


your in for a real treat when you make it to level 5 then.. lol.. he is a BEAST!


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: January 7th, 2012, 5:04 pm 
Offline

Joined: October 11th, 2010, 12:30 pm
Posts: 406
@Ton80 Nice work. I like this kind of games. I saw a prototype of breakout type games here http://www.autohotkey.com/forum/viewtopic.php?t=78879 I hope you publish it soon
Edit : It appears that you already published it :) http://www.autohotkey.com/forum/viewtopic.php?t=79214


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: January 8th, 2012, 3:04 am 
Offline

Joined: December 18th, 2009, 6:08 pm
Posts: 63
kenn wrote:
@Ton80 Nice work.


thanks kenn. glad you like it.. the breakout game should actually be redone, i've learned alot since that one.. i actually find this game kind of addicting and usually give it a go once or twice a day.. 40,000+ level 20..
i made some power ups for it, but never posted it, i think it took something away from the game.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: January 8th, 2012, 3:48 pm 
Offline

Joined: October 11th, 2010, 12:30 pm
Posts: 406
Quote:
i made some power ups for it, but never posted it, i think it took something away from the game.

Would you please post it? It will be beneficial for AHK learners.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: February 12th, 2012, 2:23 pm 
Offline

Joined: October 27th, 2006, 10:12 am
Posts: 649
Wow, the coolest ahk-game I have seen so far. Great, thanks!

Your example might be interesting also for implementing this: http://www.autohotkey.com/forum/viewtopic.php?t=81844


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 10 posts ] 

All times are UTC [ DST ]


Who is online

Users browsing this forum: Bing [Bot], Bon, sks and 18 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group