Pacman Game

BlitzPlus Forums/BlitzPlus Beginners Area/Pacman Game

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

OK... Just knocked this together to demonstrate my point:

You'll need:


Graphics 512,512,32,2

Data "MMGCCCCCCCCCCCCFGCCCCCCCCCCCCFMM"
Data "MMK............JK............JMM"
Data "MMK.ABBD.ABBBD.JK.ABBBD.ABBD.JMM"
Data "MMKOJMMK.JMMMK.JK.JMMMK.JMMKOJMM"
Data "MMK.ECCH.ECCCH.EH.ECCCH.ECCH.JMM"
Data "MMK..........................JMM"
Data "MMK.ABBD.AD.ABBBBBBD.AD.ABBD.JMM"
Data "MMK.ECCH.JK.ECCFGCCH.JK.ECCH.JMM"
Data "MMK......JK....JK....JK......JMM"
Data "MMLBBBBD.JLBBD.JK.ABBIK.ABBBBIMM"
Data "MMMMMMMK.JGCCH.EH.ECCFK.JMMMMMMM"
Data "MMMMMMMK.JK..........JK.JMMMMMMM"
Data "MMMMMMMK.JK.ABD  ABD.JK.JMMMMMMM"
Data "MMMCCCCH.EH.JGH  EFK.EH.ECCCCMMM"
Data "MMM     ....JK    JK....     MMM"
Data "MMMBBBBD.AD.JLBBBBIK.AD.ABBBBMMM"
Data "MMMMMMMK.JK.ECCCCCCH.JK.JMMMMMMM"
Data "MMMMMMMK.JK..........JK.JMMMMMMM"
Data "MMMMMMMK.JK.ABBBBBBD.JK.JMMMMMMM"
Data "MMGCCCCH.EH.ECCFGCCH.EH.ECCCCFMM"
Data "MMK............JK............JMM"
Data "MMK.ABBD.ABBBD.JK.ABBBD.ABBD.JMM"
Data "MMK.ECFK.ECCCH.EH.ECCCH.JGCH.JMM"
Data "MMKO..JK................JK..OJMM"
Data "MMLBD.JK.AD.ABBBBBBD.AD.JK.ABIMM"
Data "MMGCH.EH.JK.ECCFGCCH.JK.EH.ECFMM"
Data "MMK......JK....JK....JK......JMM"
Data "MMK.ABBBBILBBD.JK.ABBILBBBBD.JMM"
Data "MMK.ECCCCCCCCH.EH.ECCCCCCCCH.JMM"
Data "MMK..........................JMM"
Data "MMLBBBBBBBBBBBBBBBBBBBBBBBBBBIMM"

Img_Maze = LoadAnimImage("Maze.png",16,16,0,16)
Img_PacMan = LoadAnimImage("PacMan.png",32,32,0,16)
MaskImage Img_PacMan,58,37,75

Dim Maze(31,30)


For y=0 To 30
	Read m$

	For x=0 To 31
		Maze(x,y) = Asc(Mid(m$,x+1,1))
	Next
Next

px = 248
py = 368
d = 0
f = 0
fd = 1
fdel = 1

SetBuffer BackBuffer()

Repeat

	;Draw Maze
	For x=0 To 31
	For y=0 To 30
		T$ = Chr(maze(x,y))
		Tile = maze(x,y) - 65
		
		If T = " " Then DrawBlock Img_Maze,x*16,y*16,13
		If T = "." Then DrawBlock Img_Maze,x*16,y*16,14
		If T = "O" Then DrawBlock Img_Maze,x*16,y*16,15
		If Tile >= 0 And Tile <= 12 Then DrawBlock Img_Maze,x*16,y*16,Tile
		
	Next
	Next
	
	; Draw Pacman
	DrawImage Img_PacMan,px-8,py-8,(d*4)+f
	
	; Animation
	fdel = (fdel + 1) Mod 2
	If fdel = 0 Then f = f + fd
	If f = 3 And fd= 1 Then fd = -1
	If f = 0 And fd = -1 Then fd = 1
	
	; Control
	If KeyDown(205) Then d = 0
	If KeyDown(200) Then d = 3
	If KeyDown(208) Then d = 1
	If KeyDown(203) Then d = 2
	
	; Movement
	opx = px
	opy = py
	If d = 0 Then px = px + 1
	If d = 1 Then py = py + 1
	If d = 2 Then px = px - 1
	If d = 3 Then py = py - 1
	
	x = (px+8) / 16
	y = (py+8) / 16
	Current$ = Chr(maze(x,y))
	
	; Collision
	If Current <> "." And Current <> " " And Current <> "O" Then
		px = opx
		py = opy
	EndIf
	
	
	; Pill Eaten
	If Current ="." Then maze(x,y) = 32
	
	; Power Pill!
	If Current ="O" Then
		; OOOoooohh!
	EndIf
	
Flip
Until KeyHit(1)