I decided to start with the explorer() method because of how central it is to the program. I quickly realized I'd need new functions for accessing specific pieces of data from the CVSs, so I made a few for detecting what region the part is in, another for fetching the region name and fetching the region z coordinate. Here is what explorer looks like now.
def explorer():
global x
global y
global z
global chapter
global region
global regionDisplay
global Lori
global Lauren
global Julius
global Marcus
menu = GameMenu()
characters = [Lori, Lauren, Julius, Marcus]
menu.update(characters)
selections = [4, 5]
#Code goes here
print(regionDisplay + ":")
print(regionDiscribe(region))
# need and area scanner for detecting nearby locations
if regionCheck(x+1,y,z) >= 0 and \
(fetchRegionZ(regionCheck(x+1,y,z))-fetchRegionZ(region) <= 5 and
fetchRegionZ(region)-fetchRegionZ(regionCheck(x+1,y,z)) <= 5):
selections.append(1)
if regionCheck(x,y+1,z) >= 0 and \
(fetchRegionZ(regionCheck(x,y+1,z))-fetchRegionZ(region) <= 5 and
fetchRegionZ(region)-fetchRegionZ(regionCheck(x,y+1,z)) <= 5):
selections.append(0)
if regionCheck(x-1,y,z) >= 0 and \
(fetchRegionZ(regionCheck(x-1,y,z))-fetchRegionZ(region) <= 5 and
fetchRegionZ(region)-fetchRegionZ(regionCheck(x-1,y,z)) <= 5):
selections.append(3)
if regionCheck(x,y-1,z) >= 0 and \
(fetchRegionZ(regionCheck(x,y-1,z))-fetchRegionZ(region) <= 5 and
fetchRegionZ(region)-fetchRegionZ(regionCheck(x,y-1,z)) <= 5):
selections.append(2)
if 0 in selections:
print("0: March north")
if 1 in selections:
print("1: March east")
if 2 in selections:
print("2: March south")
if 3 in selections:
print("3: March west")
print("4: Party")
print("5: Rest")
playerChoice = inputAndCheck("Your Call: ", selections)
if playerChoice == 0:
y += 1
if playerChoice == 1:
x += 1
if playerChoice == 2:
y -= 1
if playerChoice == 3:
x -= 1
if playerChoice == 4:
menu.displayGameMenu()
if playerChoice == 5:
rest()
region = regionCheck(x, y, z)
regionDisplay = fetchRegionDisplay(region)
#defualt iterations. temporary.
chapter += 1
os.system("cls")
I started by importing all the global variables and initiating the GameMenu class called menu. I added all the characters to the pcList for later use when I work on GameManu class. I then put in those two print commands for the region and description. I quickly realized that I'd need a way to access and update the region ID, display name, and z values every time the player moves. So I went and created 4 new funtions: fetchRegionDisplay(), fetchRegionZ(), regionDescribe() and regionCheck().
regionCheck() takes an x, y, and z as parameters and compares those parameters to the data in regions.csv by going down the regions list and seeing if the parameters are within the ranges for that region. Then once it finds the region it's in, it returns the region ID.
def regionCheck(x, y, z):fetchRegionZ() takes the region ID as a parameter and returns the z from the CSV.
file = open("regions.csv")
fileReader = csv.reader(file)
targetRegion = -1
regions = []
for line in fileReader:
regions.append(line)
file.close()
for line in regions:
if line == []:
continue
if ((int(line[2]) <= x) and (int(line[3]) >= x)) and ((int(line[4]) <= y) and (int(line[5]) >= y)):
targetRegion = int(line[0])
break
return targetRegion
def fetchRegionZ(regionID):
file = open("regions.csv")
fileReader = csv.reader(file)
regions = []
for line in fileReader:
if line == []:
continue
regions.append(line)
file.close()
return int(regions[regionID][7])
fetchRegionDisplay() takes the region ID as a parameter as well and returns the display name of the region.
def fetchRegionDisplay(regionID):
file = open("regions.csv")
fileReader = csv.reader(file)
regions = []
for line in fileReader:
if line == []:
continue
regions.append(line)
file.close()
return regions[regionID][1]
regionDescirbe() was also added to randomize the description of the region each time it's called. Fortunately, it accommodates regions with more than 3 options, so I'll probably add more descriptions for each region so it's not as repetitive.
def regionDiscribe(regionID):
file = open("descriptions.csv")
fileReader = csv.reader(file)
regions = []
for line in fileReader:
if line == []:
continue
regions.append(line)
file.close()
choice = int(random.random() * 10)
while choice >= len(regions[regionID]):
choice = int(random.random() * 10)
return regions[regionID][choice]
Then I continued work on explorer(), adding the functionality to move around the map. This was accomplished by first calling regionCheck() to make sure there is a location and also fetchRegionZ() to make sure there isn't a lot of change in z. If both of those conditions I met I added the value to the selections list. (0 = North, 1 = East, 2 = South, 3 = West, 4 = Rest, 5 = Menu)
selections = [4, 5]
#Code goes here
print(regionDisplay + ":")
print(regionDiscribe(region))
# need and area scanner for detecting nearby locations
if regionCheck(x+1,y,z) >= 0 and \
(fetchRegionZ(regionCheck(x+1,y,z))-fetchRegionZ(region) <= 5 and
fetchRegionZ(region)-fetchRegionZ(regionCheck(x+1,y,z)) <= 5):
selections.append(1)
if regionCheck(x,y+1,z) >= 0 and \
(fetchRegionZ(regionCheck(x,y+1,z))-fetchRegionZ(region) <= 5 and
fetchRegionZ(region)-fetchRegionZ(regionCheck(x,y+1,z)) <= 5):
selections.append(0)
if regionCheck(x-1,y,z) >= 0 and \
(fetchRegionZ(regionCheck(x-1,y,z))-fetchRegionZ(region) <= 5 and
fetchRegionZ(region)-fetchRegionZ(regionCheck(x-1,y,z)) <= 5):
selections.append(3)
if regionCheck(x,y-1,z) >= 0 and \
(fetchRegionZ(regionCheck(x,y-1,z))-fetchRegionZ(region) <= 5 and
fetchRegionZ(region)-fetchRegionZ(regionCheck(x,y-1,z)) <= 5):
selections.append(2)
Then I printed the options available and asked what the player wanted to do. Once they inputted a value I update the position values accordingly or call the function for the action they'd like to take.
if 0 in selections:
print("0: March north")
if 1 in selections:
print("1: March east")
if 2 in selections:
print("2: March south")
if 3 in selections:
print("3: March west")
print("4: Party")
print("5: Rest")
playerChoice = inputAndCheck("Your Call: ", selections)
if playerChoice == 0:
y += 1
if playerChoice == 1:
x += 1
if playerChoice == 2:
y -= 1
if playerChoice == 3:
x -= 1
if playerChoice == 4:
menu.displayGameMenu()
if playerChoice == 5:
rest()
region = regionCheck(x, y, z)
regionDisplay = fetchRegionDisplay(region)
With all this implemented we get out the first glimpse of actual gameplay:
![]() |
I forgot to put a period between those two sentences in the description. I'll grammar-check those when I add more descriptions to the game. |
Comments
Post a Comment