Skip to content

Commit 0490633

Browse files
author
=
committed
prepare to integrate
1 parent d1845a5 commit 0490633

File tree

3 files changed

+139
-17
lines changed

3 files changed

+139
-17
lines changed

tensorflow/ann_game.py

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# youtube thenewboston python game development
2+
# https://youtu.be/pNjSyBlbl_Q?list=PL6gx4Cwl9DGAjkwJocj7vlc_mFU-4wXJq
3+
4+
import pygame
5+
6+
print(pygame.init())
7+
8+
WINDOW_HEIGHT = 200
9+
WINDOW_WIDTH = 200
10+
11+
PLAYER_WIDTH = 10
12+
PLAYER_HEIGHT = 30
13+
PLAYER_X_POS = 20
14+
PLAYER_Y_POS = WINDOW_HEIGHT - PLAYER_HEIGHT
15+
PLAYER_Y_ORIGINAL_POS = WINDOW_HEIGHT - PLAYER_HEIGHT
16+
PLAYER_Y_POS_CHANGE = 0
17+
JUMP_HEIGHT = 100
18+
19+
POS_CHANGE_GRANULARITY = 5
20+
21+
OBSTACLE_WIDTH = 30
22+
OBSTACLE_HEIGHT = 40
23+
OBSTACLE_Y_POS = WINDOW_WIDTH - OBSTACLE_HEIGHT
24+
OBSTACLE_X_POS = WINDOW_WIDTH
25+
OBSTACLE_X_POS_CHANGE = 2
26+
27+
obstaclePositions = []
28+
29+
screenshotCount = 0
30+
iterationCOunt = 0
31+
gameExit = False
32+
FRAME_RATE = 60
33+
34+
white = (255,255,255)
35+
black = (0, 0, 0)
36+
37+
gameDisplay = pygame.display.set_mode((WINDOW_WIDTH,WINDOW_HEIGHT))
38+
pygame.display.set_caption('jumper')
39+
windowSurface = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), 0, 32)
40+
41+
pygame.display.update()
42+
43+
clock = pygame.time.Clock()
44+
45+
def drawObstacles():
46+
for obstacleXPos in obstaclePositions:
47+
pygame.draw.rect(gameDisplay, black, [obstacleXPos,OBSTACLE_Y_POS, OBSTACLE_WIDTH, OBSTACLE_HEIGHT])
48+
49+
def addRandomObstacle():
50+
randomValBetween_0_and_50 = 50
51+
obstaclePositions.append(WINDOW_WIDTH-randomValBetween_0_and_50)
52+
53+
def putLabelInFile(value):
54+
scoresFile.write(value+"\n")
55+
56+
def isOkayToJump():
57+
# check for an obstacle nearing the player
58+
for obstacleXPos in obstaclePositions:
59+
if obstacleXPos <= PLAYER_X_POS+20:
60+
return True
61+
return False
62+
63+
def jump():
64+
PLAYER_Y_POS_CHANGE = -1*POS_CHANGE_GRANULARITY
65+
66+
scoresFile = open("labels.txt","a")
67+
while not gameExit:
68+
69+
# event loop
70+
for event in pygame.event.get():
71+
if event.type == pygame.QUIT:
72+
gameExit = True
73+
if event.type == pygame.KEYDOWN:
74+
if event.key == pygame.K_q:
75+
gameExit = True
76+
if event.key == pygame.K_SPACE:
77+
# make the player start going up only if it is stationary
78+
if PLAYER_Y_POS_CHANGE == 0:
79+
PLAYER_Y_POS_CHANGE = -1*POS_CHANGE_GRANULARITY
80+
81+
# when you have jumped high enough come back
82+
if PLAYER_Y_POS == PLAYER_Y_ORIGINAL_POS - JUMP_HEIGHT:
83+
PLAYER_Y_POS_CHANGE = POS_CHANGE_GRANULARITY
84+
85+
# PLAYER_Y_POS_CHANGE > 0 means that the player is coming down
86+
if PLAYER_Y_POS_CHANGE > 0 and PLAYER_Y_POS == PLAYER_Y_ORIGINAL_POS:
87+
PLAYER_Y_POS_CHANGE = 0
88+
89+
# update the position of player
90+
PLAYER_Y_POS += PLAYER_Y_POS_CHANGE
91+
92+
# update the position of the each obstacle
93+
for index, position in enumerate(obstaclePositions):
94+
obstaclePositions[index] -= OBSTACLE_X_POS_CHANGE
95+
96+
# remove the passed obstacle from the obstacle list
97+
for index, obstacleXPos in enumerate(obstaclePositions):
98+
if obstacleXPos < 0:
99+
obstaclePositions.pop(index)
100+
101+
# add an obstacle every 100th iteration
102+
if iterationCOunt % 100 == 0:
103+
addRandomObstacle()
104+
105+
# check if an obstacle collided with the player
106+
for obstacleXPos in obstaclePositions:
107+
# check if obstacle has crossed into the player's territory
108+
if obstacleXPos < PLAYER_X_POS+PLAYER_WIDTH:
109+
# check if player is blocking
110+
if OBSTACLE_Y_POS <= PLAYER_Y_POS:
111+
gameExit = True
112+
113+
gameDisplay.fill(white)
114+
pygame.draw.rect(gameDisplay, black, [PLAYER_X_POS,PLAYER_Y_POS, PLAYER_WIDTH, PLAYER_HEIGHT])
115+
drawObstacles()
116+
pygame.display.update()
117+
iterationCOunt += 1
118+
119+
clock.tick(FRAME_RATE)
120+
121+
scoresFile.close()
122+
pygame.quit()
123+
quit()

tensorflow/game.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ def jump():
109109
# check if player is blocking
110110
if OBSTACLE_Y_POS <= PLAYER_Y_POS:
111111
gameExit = True
112+
113+
114+
# AUTOMATION OF JUMP AND SCREENSHOT FOR TRAINING
112115

113116
# screen shot only when the player is stationary
114117
print(screenshotCount)

tensorflow/trainAnn.py

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@
2323
DATADIR = "screenshots"
2424
LABELFILE = "labels.txt"
2525

26-
TRAINING_COUNT = 20000
27-
LAST_NUMBER = 21000
26+
TRAINING_AMOUNT = 20000
27+
TESTING_AMOUNT = 1000
2828

2929
training_data_samples = []
3030
def create_training_samples():
3131
#for imgName in range(1, 194776):
3232
path = os.path.join(DATADIR)
3333

3434
IMG_SIZE = 100
35-
for img in tqdm(range(1, TRAINING_COUNT+1)):
35+
for img in tqdm(range(0, TRAINING_AMOUNT)):
3636
try:
3737
img_array = cv2.imread(os.path.join(path,str(img)+".jpeg") ,cv2.IMREAD_GRAYSCALE)
3838
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
@@ -47,7 +47,7 @@ def create_test_samples():
4747
path = os.path.join(DATADIR)
4848

4949
IMG_SIZE = 100
50-
for img in tqdm(range(TRAINING_COUNT+1, LAST_NUMBER+1)):
50+
for img in tqdm(range(TRAINING_AMOUNT, TRAINING_AMOUNT+TESTING_AMOUNT)):
5151
try:
5252
img_array = cv2.imread(os.path.join(path,str(img)+".jpeg") ,cv2.IMREAD_GRAYSCALE)
5353
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
@@ -58,25 +58,25 @@ def create_test_samples():
5858

5959
training_data_labels = []
6060
def create_training_labels():
61-
count = 1
61+
count = 0
6262
img_name = ""
6363
with open(LABELFILE) as f:
6464
for line in f:
65-
if count >= TRAINING_COUNT+1:
65+
if count >= TRAINING_AMOUNT:
6666
break
6767
array_of_words = line.split(',')
6868
training_data_labels.append(int(array_of_words[1]))
6969
img_name = array_of_words[0]
7070

7171
count += 1
72-
72+
7373
test_data_labels = []
7474
def create_test_labels():
75-
count = 1
75+
count = 0
7676
img_name = ""
7777
with open(LABELFILE) as f:
7878
for line in f:
79-
if count > TRAINING_COUNT and count < LAST_NUMBER+1:
79+
if count >= TRAINING_AMOUNT and count < TRAINING_AMOUNT+TESTING_AMOUNT:
8080
array_of_words = line.split(',')
8181
test_data_labels.append(int(array_of_words[1]))
8282
img_name = array_of_words[0]
@@ -90,16 +90,14 @@ def create_test_labels():
9090
create_test_labels()
9191

9292
x_train = training_data_samples
93-
y_train = np.zeros((20000,), dtype=int)
93+
y_train = np.zeros((TRAINING_AMOUNT,), dtype=int)
9494
for index, val in enumerate(training_data_labels):
9595
y_train[index] = val
96-
#y_train = training_data_labels
9796

9897
x_test = test_data_samples
99-
y_test = np.zeros((1000,), dtype=int)
98+
y_test = np.zeros((TESTING_AMOUNT,), dtype=int)
10099
for index, val in enumerate(test_data_labels):
101100
y_test[index] = val
102-
#y_test = test_data_labels
103101

104102

105103

@@ -131,10 +129,8 @@ def create_test_labels():
131129
predictions = model.predict(x_test)
132130
print("---------------------------")
133131

134-
#print(np.argmax(predictions[50]))
135-
136-
count = 1
132+
count = 0
137133
for prediction in predictions:
138134
if np.argmax(prediction) == 1:
139-
print(20000+count, '--', np.argmax(prediction), '--', y_test[count-1])
135+
print(TRAINING_AMOUNT+count, '--', np.argmax(prediction), '--', y_test[count])
140136
count += 1

0 commit comments

Comments
 (0)