Пример #1
0
def AddData():
    EntData = DataEntry.get()
    if EntData == "snake":
        DataEntry.delete(0, END)
        snake.snake(Graph)
        return 0
    elif EntData.lower() == "chuck norris":
        EntData = "42"
    DataArr = EntData.split(',')
    for x in range(0, len(DataArr)):
        DataArr[x] = float(DataArr[x])
    List = ListChooseVar.get()

    if List == "L1":
        for Data in DataArr:
            L1.append(Data)
            listOne.insert(END, Data)
            listOne.see(END)
        summRecalc("L1")
        if GraphDrawn[2] == "L1":
            GraphDrawn[1].reDraw(L1)
        elif GraphDrawn[2] == "BOTH":
            GraphDrawn[1].reDraw(L1, L2)
    else:
        for Data in DataArr:
            L2.append(Data)
            listTwo.insert(END, Data)
            listTwo.see(END)
        summRecalc("L2")
        if GraphDrawn[2] == "L2":
            GraphDrawn[1].reDraw(L2)
        elif GraphDrawn[2] == "BOTH":
            GraphDrawn[1].reDraw(L1, L2)

    DataEntry.delete(0, END)
Пример #2
0
def test_sort_generation():

	test_gen = []

	for i in range(10):
		test_gen.append(snake.snake())
		test_gen[-1].fitness = np.random.randint(0, 10)

	test_gen = ga.sort_generation(test_gen)

	assert all(test_gen[i].fitness >= test_gen[i+1].fitness for i in range(len(test_gen)-1))
Пример #3
0
 def generateSnakes(self, newGen=[]):
     if self.gen == 1:
         return [
             snake(None, randomColor(), self.randomDirection())
             for i in range(self.genSize)
         ]
     else:
         if self.gen > 100:
             for snek in newGen:
                 snek.sinceFoodCap = 2500
         return newGen
Пример #4
0
def main():

  h, w = terminal_size()
  h *= 2  # Using gImage Glyphs

  background = gImage(w, h, background=0b000)
  for y in range(h):
    for x in [0, w-1]:
      background.paint_pixel(y, x, 0b101)
  for x in range(w):
    for y in [0, h-1]:
      background.paint_pixel(y, x, 0b101)

  gim = gImage(0, 0).pasteImage(0, 0, Image.open(HERE / "mario.bmp"))
  gim.paint(h-gim.height-1, 1)

  #gImage(0, 0).pasteImage(0, 0, Image.open(HERE / "lars.bmp")).paint(2, 2)
  gImage(0, 0).pasteImage(0, 0, Image.open(HERE / "penrose.bmp")).paint(2, 2)
  #input("")
  from snake import snake
  snake()
Пример #5
0
def doTest(test, expected):
    print("Starting test case %s" % str(test.__name__))
    snake_under_test = snake.snake(False)
    start_time = time.time()
    try:
        result = test(snake_under_test)
    except:
        result = sys.exc_info()[1]
    if not result in expected:
        print("TEST FAIL!: expected '%s' Got: '%s'" % (expected, result))
    else:
        print("TEST PASS! Elapsed time: %f milliseconds" % ((time.time() - start_time) * 1000))
Пример #6
0
    def add_snake(self, ext_snake=None):

        if ext_snake == None:
            self.snake = snake.snake()
        else:
            if not isinstance(ext_snake, snake.snake):
                raise TypeError("Expected a snake, received a " +
                                type(ext_snake).__name__)
            self.snake = ext_snake

        # initialize position
        self.snake.position = np.random.randint(0, self.size, 2)
        self.snake.occupied.insert(0, self.snake.position.copy())
Пример #7
0
def test_create_generation(fixture_neural_network):

	test_gen = []

	for i in range(10):
		test_gen.append(snake.snake((fixture_neural_network)))
		test_gen[-1].fitness = np.random.randint(0, 10)

	new_gen = ga.create_generation(test_gen)

	for sn in new_gen:
		assert isinstance(sn, snake.snake)
		assert len(test_gen) == len(new_gen)
		assert sn.neural_network.shape == fixture_neural_network.shape
Пример #8
0
    def breed(self, a, b):

        babyColor = (((a.col[0] + b.col[0]) / 2) +
                     random(-1 * self.mutationDelta, self.mutationDelta),
                     ((a.col[1] + b.col[1]) / 2) +
                     random(-1 * self.mutationDelta, self.mutationDelta),
                     ((a.col[2] + b.col[2]) / 2) +
                     random(-1 * self.mutationDelta, self.mutationDelta))
        babyNN = a.nn.createCopy()

        babyNN.weights_i = self.breedWeights(a.nn.weights_i, b.nn.weights_i)
        babyNN.weights_h = self.breedWeights(a.nn.weights_h, b.nn.weights_h)
        babyNN.bias_i = self.breedWeights(a.nn.bias_i, b.nn.bias_i)
        babyNN.bias_h = self.breedWeights(a.nn.bias_h, b.nn.bias_h)

        return snake(babyNN, babyColor, self.randomDirection())
Пример #9
0
def addSnake():
    global snakeCount, newMemberName, newMemberSnakes
    print("Add a snake to " + newMemberName + "'s list")
    snakeName = raw_input("Snake name: ")
    snakeType = raw_input("Snake type: ")

    if snakeType == "Mamba":
        print("WARNING: The snake is very toxic!")

    if snakeType == "Anaconda":
        print("INFO: The snake is protected and cannot be added!")
        return

    snakeCount = snakeCount + 1
    theSnake = snake(snakeCount, snakeName, snakeType)
    newMemberSnakes.append(theSnake)
def supervised_superfun(X1, y, epochs, n, N = 50):

    X = np.zeros((len(X1), X1[0].shape[0], X1[0].shape[1], 3))
    X[X1 == 1, 0] = 1
    X[X1 == 2, 1] = 1
    X[X1 == -1, 2] = 1

    size = np.shape(X[0])

    optimizer = keras.optimizers.Adam(lr=1e-2)
    #create model
    model = Sequential()
    #add model layers
    model.add(Conv2D(64, kernel_size = (3, 3), activation = 'relu', input_shape = size))
    model.add(Flatten())
    model.add(Dense(4, activation = 'softmax'))
    model.compile(optimizer = optimizer, loss = 'categorical_crossentropy', metrics = ['accuracy'])
    model.fit(X, y, validation_data = (X, y), epochs = epochs, shuffle= True, verbose = 0)

    predicts = model.predict(X)
    print('Accuracy: ', np.mean((np.argmax(predicts, axis = 1) == np.argmax(y, axis = 1))))
    game_score = []
    game_score = np.zeros(N)
    for i in range(N):
        game_go_on = 1
        game = snake(n, n)
        X1 = game.board_call()
        board = board_3D(X1)
        counter = 0
        score = 0
        while game_go_on == 1:
            counter += 1
            pred = model.predict(board)[0]
            direction = np.argmax(pred)
            game_go_on = game.move(direction)
            X1 = game.board_call()
            board = board_3D(X1)
            if game.score > score:
                score = game.score
                counter = 0
            if counter > n*n:
                print('Tolerance limit, run: ', i)
                break

        game_score[i] = game.score
    print(game_score)
Пример #11
0
def evaluate(chromosome, arch=[], N=20, display=False, sleep=None, avg=10):

    network = Network(chromosome, relu, arch)

    def get_move(position, N):
        rays = snake.wall_ray(position, N) + snake.snake_ray(
            position, N) + snake.apple_ray(position, N)
        probs = network.forward(rays)
        # print(probs)
        # return probs.index(max(probs))
        return np.random.choice(
            [i for i, x in enumerate(probs) if x == max(probs)])

    score = 0
    for i in range(avg):
        score += snake.snake(N, get_move, -100, display, sleep=sleep)
    return score / avg
Пример #12
0
def generate_children(parents, no_of_children):
    all_children = []
    l = len(parents)
    for count in range(no_of_children):
        parent1 = random.choice(parents)
        parent2 = random.choice(parents)
        child = snake.snake(width, height, brainLayer, block_length)
        for i in range(len(parent1.Brain.weights)):
            for j in range(parent1.Brain.weights[i].shape[0]):
                for k in range(parent1.Brain.weights[i].shape[1]):
                    child.Brain.weights[i][j, k] = random.choice(
                        [parent1.Brain.weights[i][j, k], parent2.Brain.weights[i][j, k]])
            for j in range(parent1.Brain.bases[i].shape[1]):
                child.Brain.bases[i][0, j] = random.choice(
                    [parent1.Brain.bases[i][0, j], parent2.Brain.bases[i][0, j]])
        all_children.append(child)
    return all_children
Пример #13
0
    def build_network_1DNN(self):
        """
        Building the CNN
        """
        self.CNN = False
        optimizer = keras.optimizers.Adam(lr=self.lr)  #lr = 1e-3 works good
        #Define size
        game = snake(self.n, self.n)
        size = np.shape(np.ravel(game.board_call()))

        self.model = Sequential()
        self.model.add(Dense(1024, activation='relu'))
        #self.model.add(Dense(16, activation = 'relu'))
        self.model.add(Dense(4, activation='linear'))

        self.model.compile(optimizer=optimizer,
                           loss='mse',
                           metrics=['accuracy'])
Пример #14
0
def main(argv):
    global width, rows, s, snack, scores
    width = 500
    scores = []
    rows = 20

    win = pygame.display.set_mode((width, width))
    s = snake((255, 0, 0), (10, 10))
    snack = cube(randomSnack(rows, s), color=(0, 255, 0))
    flag = True
    redrawWindow(win)
    clock = pygame.time.Clock()
    count = 0

    while flag and count < 50:
        pygame.time.delay(10)
        clock.tick(10)
        s.move_with_mode(argv[0], snack)
        if s.body[0].pos == snack.pos:
            s.add_cube()
            snack = cube(randomSnack(rows, s), color=(0, 255, 0))

        # Lose from collision with wall
        if ((s.body[0].pos[0] == -1) or (s.body[0].pos[0] == rows)
                or (s.body[0].pos[1] == -1) or (s.body[0].pos[1] == rows)):
            game_over(s, argv)
            count = count + 1
        # Lose by collision with body
        for x in range(len(s.body)):
            if s.body[x].pos in list(map(lambda z: z.pos, s.body[x + 1:])):
                game_over(s, argv)
                count = count + 1
                break

        redrawWindow(win)

    # Save Score results to an outfile
    with open(
            argv[0] + datetime.datetime.today().strftime('%d-%m-%Y') + '.txt',
            'w') as f:
        for listitem in scores:
            f.write('%s\n' % listitem)
Пример #15
0
def main():
    # command line argument parser
    ap = argparse.ArgumentParser()
    ap.add_argument('-o', '--output', required=True, help='relative path to save the snakes')
    args = vars(ap.parse_args())
    snakes = [snake.snake(width, height, brainLayer, block_length) for _ in range(population_size)]
    arena = Arena(width, height, block_length)
    top_snakes = []
    for i in range(no_of_generations):
        print('generation : ', i+1, ',', end='\n')
        run(snakes, arena)
        # sorting the population wrt length of snake and steps taken
        snakes.sort(key=lambda x: (len(x.list), -x.steps_taken), reverse=True)
        print_top_5(snakes[0:5])
        # generalising the whole population
        print('saving the snake')
        top_snakes.append(snakes[0])
        # saving top snakes list as pickle
        save_top_snakes(top_snakes, args['output'])
        snakes = create_new_population(snakes)
Пример #16
0
 def __init__(self, width, height, framerate):
     self.WIDTH = width
     self.HEIGHT = height
     self.FRAMERATE = framerate
     self.root = tk.Tk()
     self.CANVAS = tk.Canvas(self.root,
                             width=self.WIDTH,
                             height=self.HEIGHT)
     self.CANVAS.pack()
     self.CANVAS.bind_all('<Left>', self.left_key)
     self.CANVAS.bind_all('<Right>', self.right_key)
     self.CANVAS.bind_all('<Up>', self.up_key)
     self.CANVAS.bind_all('<Down>', self.down_key)
     self.pixel_size = 5
     self.snake = snake.snake(self.CANVAS, self.WIDTH, self.HEIGHT,
                              self.pixel_size)
     self.snake.place_snake()
     self.food_postition = None
     self.testing = None
     self.place_food()
Пример #17
0
def test(model):
    game_test = snake.snake()
    end = False
    move = 0
    while not end:
        current_food = game_test.food_location
        state, _ = get_state(game_test.location_history,
                             game_test.food_location)
        prediction = model.predict(state)[0]
        action = np.argmax(prediction)
        result = game_test.play(action)
        print(f'     {int(prediction[0]*1000)}')
        print(f'{int(prediction[1]*1000)}  {move} {int(prediction[3]*1000)}')
        print(f'     {int(prediction[2]*1000)}')
        game_test.print_board()
        if current_food != game_test.food_location:
            move = 0
        else:
            move += 1
        if result == 'invalid' or move > 50:
            end = True
Пример #18
0
    def sanke_grows(self):
        position = []
        last_snake_position = self.snake_list[-1].getPosition()
        last_sanke_dir = self.snake_list[-1].getDirection()

        last_snake_pos = [last_snake_position[0],last_snake_position[1]]
        #新建一段蛇
        if last_sanke_dir == 'up':
            position = [last_snake_pos[0],last_snake_pos[1]+self.cube_size]
        if last_sanke_dir == 'down':
            position = [last_snake_pos[0],last_snake_pos[1]-self.cube_size]
        if last_sanke_dir == 'left':
            position = [last_snake_pos[0]+self.cube_size,last_snake_pos[1]]
        if last_sanke_dir == 'right':
            position = [last_snake_pos[0]-self.cube_size,last_snake_pos[1]]
        #给新的蛇加上turn属性
        newSnake = Snk.snake(self.screen, [self.snake_list[-1].getColor()[0]-self.n,self.snake_list[-1].getColor()[1]-self.n,self.snake_list[-1].getColor()[2]-self.n], position, last_sanke_dir,self.cube_size)
        if self.snake_list[-1].getTurns() != []:
            for turn in self.snake_list[-1].getTurns():
                newSnake.setTurns(turn)
            #   print(self.snake_list[-1].getTurns())
        self.snake_list.append(newSnake)
Пример #19
0
    def __initGame(self):
        #initialize game variables (used for looping)
        self._apples = []
        self._applesToSpawn = self.maxApples

        #set-up screen
        self.__resetScreen(self._screen)
        self._screen.register_shape("apple.gif")

        #register keystrokes
        self._player = snake()
        self._screen.onkey(self.__queueUp, "Up")
        self._screen.onkey(self.__queueDown, "Down")
        self._screen.onkey(self.__queueLeft, "Left")
        self._screen.onkey(self.__queueRight, "Right")

        #generate apples and score tracking
        self.__generateApples()
        self._totalScore = score()

        #begin game
        self.__gameloop()
Пример #20
0
    def loadProfile(self):
        if not os.path.exists('SnakeTamer/' + self.userID + '.snaketamer'):
            if not os.path.exists('SnakeTamer'):
                os.mkdir("SnakeTamer")

            # if there was no profile found create one
            self.saveProfile(1)

        else:
            f = open("SnakeTamer/" + self.userID + ".snaketamer", "r")
            if f.mode == 'r':
                content = json.loads(f.read())
                self.last_action = content["last_action"]
                for sn in content["snakes"]:
                    self.snakes.append(
                        snake(str(sn["name"]), int(sn["level"]),
                              int(sn["health"]), int(sn["hunger"]),
                              int(sn["happiness"]), int(sn["last_eaten"]),
                              int(sn["last_levelUp"])))
            else:
                print("Profil konnte nicht geladen werden.")
            return
Пример #21
0
def get_event(location_history, food_location):
    possible_actions = 4
    events = []
    state, _ = get_state(location_history, food_location)
    game_e = snake.snake()
    for action in range(possible_actions):
        game_e.location_history = location_history[:]
        game_e.food_location = food_location
        game_e.snake_length = max(len(location_history), 3)
        result = game_e.play(action)
        reward = get_reward(result)
        if reward == -1:
            done = True
            events.append([None, action, reward, None, done])
        else:
            next_state, _ = get_state(game_e.location_history,
                                      game_e.food_location)
            done = False
            events.append([None, action, reward, next_state[:], done])

    events[0][0] = state
    return events
Пример #22
0
    def __init__(self, frametime, playmode):
        #how long each frame is
        self.SPEED = frametime

        #game mode 1=human 2=ai
        self.mode = playmode
        self.s = snake.snake()
        self.root = Tk()

        self.rootFrame = Frame(self.root, width=500, height=50, bg="white")
        self.rootFrame.pack()

        self.score = StringVar()
        self.score.set("Score: " +
                       str(self.s.get_score_alive() + self.s.get_score_eat()))
        self.scoreLabel = Label(self.rootFrame, textvariable=self.score).pack()
        self.canvas = Canvas(self.root, width=500, height=500, bg="gray")
        self.canvas.pack()

        self.root.bind('a', self.left)
        self.root.bind('d', self.right)
        self.root.bind('<Left>', self.left)
        self.root.bind('<Right>', self.right)
        self.canvas.bind('<Configure>', self.create_grid)
Пример #23
0
    restore_bullet = 0

    # OTHER LOCAL GAME VARIABLES
    isdead = 'Alive'
    gravity_counter = 0

    # COUNT
    global_stuff.COUNT = 0
    global_stuff.REMAINING_NO = global_stuff.MAXIMUM_NO
    down_move = -1
    last_left_shift_count = 0

    # SNEK CHECK
    if(global_stuff.snek == 1):
        (hx, hy) = h.get_coord()
        h = snake(hx, hy)

    # GAME LOOP
    while(1):
        # INCREASE THE COUNT AND DECREASE THE REMAINING NO
        global_stuff.COUNT += 1
        global_stuff.REMAINING_NO -= 1
        last_left_shift_count += 1

        # DISPLAY THE BOARD, HERO, BULLETS AND ENEMY(if applicable)
        term.next_play()
        board.print(h, e)
        h.print_direct()
        if(global_stuff.enemy_come == 1):
            e.print_direct()
            e.follow(h)  # make the enemy follow our hero
Пример #24
0
screen = pg.display.set_mode(((WIDTH+2)*snk.BLOCK_SIZE,(HEIGHT+2)*snk.BLOCK_SIZE))
pg.display.set_caption("snake")
font = pg.font.SysFont(pg.font.get_default_font(),40)
gameovertext = font.render("GAME OVER",1,WHITE)
starttext = font.render("PRESS ANY KEY TO START",1,WHITE)
screen.fill(BLACK)
def play_music(name, delay):
	while pg.mixer.music.get_busy():
		pg.event.poll()
		clock.tick(10)
try:
   thread.start_new_thread( play_music, ("Thread-1", 2, ) )
except:
   print "Error: unable to start thread"
# we need a snake and something to eat
snake = snk.snake(screen,WIDTH/2,HEIGHT/2) #coordinates where the first snake starts
snake2 = snk.snake(screen, WIDTH/2+5, HEIGHT/2, GOLD, YELLOW) #coordinates where the second snake starts
food = fd.food(screen,1,HEIGHT+1,1,WIDTH+1)

# food should not appear where the snake is
while food.getPos() in snake.getPosList():
	food.__init__(screen,1,HEIGHT+1,1,WIDTH+1)

# only queue quit and and keydown events
# pg.event.set_allowed([pg.QUIT,pg.KEYDOWN])
pg.event.set_blocked([pg.MOUSEMOTION,pg.MOUSEBUTTONUP,pg.MOUSEBUTTONDOWN])

# will increase game speed every 10 times we eat
eaten = 0

Пример #25
0
from tkinter import *
from tkinter import messagebox
from snake import snake

# tkinter window
root = Tk()

# snake grid variables
board_size = 400
cell_size = board_size/10
isRunning = False
# changes how much faster snake moves as it gets larger
snake_speed_multiplier = 100

s = snake()
# save the starting length of the snake for later
start_len = s.snake_len
board = Canvas(root, height=board_size + 2, width=board_size + 3)
board.pack()

def draw_snake():
    for row in range(len(s.grid)):
        for col in range(len(s.grid[row])):
            # http://www.science.smith.edu/dftwiki/index.php/File:TkInterColorCharts.png
            if s.grid[row][col] < 0:    # apple
                color = 'red'
            elif s.grid[row][col] > 0:  # snake
                #check if tile is the head of the snake
                if (row,col) == tuple(s.snake_pos):
                    color = 'green4'
                else:
Пример #26
0
import pygame
from snake import snake
from snack import snack
import time
import random
import variables

# <--- pygame init settings --->
pygame.init()
display = pygame.display.set_mode(
    (variables.screenWidth, variables.screenHeight))
pygame.display.set_caption('Snake')
snakeMgr = snake()
snackMgr = snack()
font = pygame.font.SysFont("monospace", 20)
resetMsg = font.render("Game over - press R to reset", 1, variables.text_color)
# <------>
# <--- Create snake and snack --->
snakeMgr.new_part(
    variables.size *
    random.randint(2, variables.screenWidth / variables.size - 2),
    variables.size *
    random.randint(2, variables.screenHeight / variables.size - 2))
snackMgr.new_snack(snakeMgr.body)
# <------>
# <--- Game loop, will execute until player quits the game with ESC key --->
while not snakeMgr.player_exit:

    for event in pygame.event.get():
        snakeMgr.steering(event, snackMgr)
Пример #27
0
	def __init__(self):
		self.player = snake(screen_width/2, screen_height/2)

		self.apples = []
		for i in range(number_of_apples):
			self.apples.append(apple())
Пример #28
0
import snake as sn
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# Box parameters:

rows = 10
cols = 10
start_position = (0, 0)

plot_positions, num_of_moves, num_of_steps = sn.snake(rows,
                                                      cols,
                                                      position=start_position)

print("\nNumber of moves: ", num_of_moves)
print("Number of steps: ", num_of_steps)

with plt.style.context('ggplot'):

    fig, ax = plt.subplots()
    ax.yaxis.set_major_locator(plt.NullLocator())
    ax.xaxis.set_major_formatter(plt.NullFormatter())
    ax.set(xlim=(-1, rows + 1), ylim=(-1, cols + 1))
    line, = ax.plot([], [], color='red', linewidth=6)

# ======== Animation ===================================


def line_coordinates(coordinates=()):
    # changes plot positions into line coordinates
Пример #29
0
def snake_game():

    xpos = random.randrange(10, WIN_WIDTH - WIDTH, WIDTH)
    ypos = random.randrange(10, WIN_HEIGHT - HEIGHT, HEIGHT)
    xvel = 0
    yvel = 0

    sn = snake(xpos, ypos)
    food = placeFood()

    temp = deepcopy(sn)

    # print(id(sn.body[0].xpos))
    # print(id(temp.body[0].xpos))

    game_over = False
    run = True
    while run:
        dt = clock.tick(FPS) / 1000
        temp = deepcopy(sn)

        win.fill((0, 0, 0))

        for i in range(len(sn.body)):
            print(
                str(i) + " \t X: " + str(sn.body[i].xpos) + "  \t\t Y: " +
                str(sn.body[i].ypos) + " \t TEMP: X: " +
                str(temp.body[i].xpos) + "  \t\t Y: " + str(temp.body[i].ypos))

        for event in pg.event.get():
            if event.type == pg.QUIT:
                pg.quit()
                sys.exit()
            if event.type == pg.KEYDOWN:
                if event.key == pg.K_ESCAPE:
                    run = False
                    main()

        keys = getKeys()

        ##------------------------For TESTING--------------------##
        ##

        if keys[pg.K_LSHIFT]:
            sn.addBody(sn.body[0].xpos + WIDTH, sn.body[0].ypos)

        if keys[pg.K_TAB]:
            # auch der Head wird deleted ^^
            sn.deleteBody()

        ##--------------------------------------------------------##

        if keys[pg.K_UP] and yvel == 0:
            yvel = -HEIGHT
            xvel = 0

        if keys[pg.K_DOWN] and yvel == 0:
            yvel = HEIGHT
            xvel = 0

        if keys[pg.K_LEFT] and xvel == 0:
            xvel = -WIDTH
            yvel = 0

        if keys[pg.K_RIGHT] and xvel == 0:
            xvel = WIDTH
            yvel = 0

        # check if snake run into itself
        for i in range(len(sn.body) - 1):
            if sn.body[0].xpos == sn.body[
                    i + 1].xpos and sn.body[0].ypos == sn.body[i + 1].ypos:
                game_over = True

        # check if snake run into  the border
        if sn.body[0].xpos < 0 or sn.body[0].xpos > (
                WIN_WIDTH - WIDTH
        ) or sn.body[0].ypos < 0 or sn.body[0].ypos > (WIN_HEIGHT - HEIGHT):
            game_over = True

        if game_over:
            print("GAME OVER!")
            xpos = 50
            ypos = 50
            xvel = 0
            yvel = HEIGHT

            food = placeFood()
            print(food.xpos, food.ypos)

            for i in range(len(sn.body) - 1):
                sn.deleteBody()

            sn = snake(xpos, ypos)
            game_over = False
            death_screen()
            #run = False
            #  exit()

        else:
            if sn.body[0].xpos == food.xpos and sn.body[0].ypos == food.ypos:
                food = placeFood()
                sn.addBody(sn.body[0].xpos + WIDTH, sn.body[0].ypos)

            if xvel != 0:
                xpos += xvel
            if yvel != 0:
                ypos += yvel

            sn.body[0].xpos = xpos
            sn.body[0].ypos = ypos

            for i in range(len(sn.body) - 1):
                sn.body[i + 1].xpos = temp.body[i].xpos
                sn.body[i + 1].ypos = temp.body[i].ypos

        for i in range(len(sn.body)):
            pg.draw.rect(win, (255, 255, 255),
                         (sn.body[i].xpos + 1, sn.body[i].ypos + 1, WIDTH - 2,
                          HEIGHT - 2))
            # damit der head eine andere Farbe hat
            # if(i == 0):
            #     pg.draw.rect(win, (0, 0, 255),
            #                 (sn.body[i].xpos, sn.body[i].ypos, WIDTH, HEIGHT))
            # else:
            #     pg.draw.rect(win, (255, 255, 255),
            #             (sn.body[i].xpos, sn.body[i].ypos, WIDTH, HEIGHT))

        # Draw Food
        pg.draw.rect(win, (255, 0, 0), (food.xpos, food.ypos, WIDTH, HEIGHT))
        draw_text("SCORE: " + str(len(sn.body)), font, (255, 255, 255), win,
                  20, 20)
        pg.display.update()

    pg.quit()
Пример #30
0
 def __init__(self):
     self.num_gen = 1
     self.previous_generation = []
     self.current_generation = []
     for _ in range(settings.num_snakes_gen):
         self.current_generation.append(s.snake())
Пример #31
0
import random
from snake import snake
from food import food
import pygame
import pygame.freetype

pygame.init()
myfont = pygame.freetype.SysFont("Arial", 20)

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

pygame.display.set_caption("Snake")

snake = snake(screen)
food = food(screen)
food.spawn()

RUNNING = True
clock = pygame.time.Clock()
while RUNNING:
    clock.tick(15)

    screen.fill((255, 150, 255))

    TEXT = "Score: " + str(snake.snake_length)
    text_surface, rect = myfont.render(TEXT, (255, 255, 255))
    screen.blit(text_surface, (10, 10))

    for event in pygame.event.get():
Пример #32
0

pg.init()
pg.mixer.init()
eatsound = pg.mixer.Sound("snakeeat.wav")
crashsound = pg.mixer.Sound("snakecrash.wav")
clock = pg.time.Clock()
screen = pg.display.set_mode(
    ((WIDTH + 2) * snk.BLOCK_SIZE, (HEIGHT + 2) * snk.BLOCK_SIZE))
pg.display.set_caption("Snake")
font = pg.font.SysFont(pg.font.get_default_font(), 40)
gameovertext = font.render("GAME OVER", 1, WHITE)
starttext = font.render("PRESS ANY KEY TO START", 1, WHITE)
screen.fill(BLACK)

snake = snk.snake(screen, WIDTH // 2, HEIGHT // 2)
food = fd.food(screen, 1, HEIGHT + 1, 1, WIDTH + 1)

while food.getPos() in snake.getPosList():
    food, __init__(screen, 1, WIDTH + 1, 1, HEIGHT + 1)

pg.event.set_blocked([pg.MOUSEMOTION, pg.MOUSEBUTTONUP, pg.MOUSEBUTTONDOWN])

eaten = 0

drawWalls(screen)
screen.blit(starttext,
            ((WIDTH - 10) * snk.BLOCK_SIZE / 2, HEIGHT * snk.BLOCK_SIZE / 2))
pg.display.flip()
waiting = True
while waiting:
Пример #33
0
	display.refresh()

font.letter_S(25, 10, 0)
font.letter_N(20, 10, 0)
font.letter_A(15, 10, 0)
font.letter_K(10, 10, 0)
font.letter_E(5, 10, 0)
display.refresh()
game_loop = True
while game_loop:

	pg.init() 
	clock = pg.time.Clock()

	# we need a snake and something to eat
	snake = snk.snake(WIDTH/2,HEIGHT/2) #coordinates where the first snake starts
	snake2 = snk.snake(WIDTH/2+5, HEIGHT/2+5) #coordinates where the second snake starts
	food = fd.food(0,1,HEIGHT+1,1,WIDTH+1)
	
	# food should not appear where the snake is
	while food.getPos() in snake.getPosList():
		food.__init__(0,1,HEIGHT+1,1,WIDTH+1)
	
	# will increase game speed every 10 times we eat
	eaten = 0
	
	def listenController2(name, delay):
		global CONTROLLER2
		dev = os.open("../../../dev/rfcomm1", os.O_RDONLY)
	
		while True:
def startGame(multiPlayerMode=False):
	global highScore
	print("STARTING GAME in " + ("Multiplayer" if multiPlayerMode else "Singleplayer") + " Mode")
	pg.init()

	screen = pg.display.set_mode(((WIDTH+2)*blockUnit,(HEIGHT+2)*blockUnit))
	pg.display.set_caption("FLPoly Snake")
	font = pg.font.SysFont(pg.font.get_default_font(), 40)
	scoreFont = pg.font.SysFont(pg.font.get_default_font(), 25)
	starttext = font.render("PRESS ANY KEY TO START",1,black)
	screen.fill(white)

	snake = snk.snake(screen,WIDTH/4,HEIGHT/4)
	object = obj.object(screen,1,HEIGHT+1,1,WIDTH+1)
	snakeB = None
	objectB = None
	if multiPlayerMode:
		snakeB = snk2.snake(screen,WIDTH/2,HEIGHT/2)
		objectB = obj2.objectB(screen,1,HEIGHT+1,1,WIDTH+1)

	#let's start
	clock = pg.time.Clock()
	boundBox(screen)
	screen.blit(starttext,((WIDTH-10)*blockUnit/2,HEIGHT*blockUnit/2))

	pg.display.flip()
	waiting = True
	while waiting:
		event = pg.event.wait()
		if event.type == pg.KEYDOWN:
			waiting = False

	while object.getPos() in snake.getPosList():
		object.__init__(screen,1,HEIGHT+1,1,WIDTH+1)

	if multiPlayerMode:
		while objectB.getPos() in snakeB.getPosList():
			objectB.__init__(screen,1,HEIGHT+1,1,WIDTH+1)

	running = True

	while running:
		# Check if a snake has collided with a wall or is out of bounds
		if not onScreen(snake) or snake.chrashed() or (multiPlayerMode and (not onScreen(snakeB) or snakeB.chrashed())):
			running = False
			pg.quit()
			print("GAME OVER!")
			purpleSnakeScore = snake.length - 10
			if multiPlayerMode:
				orangeSnakeScore = snakeB.length - 10
				if purpleSnakeScore > orangeSnakeScore:
					print("Purple Snake Wins! Score: " + str(purpleSnakeScore))
					if purpleSnakeScore > highScore:
						highScore = purpleSnakeScore
						print("NEW HIGH SCORE: " + str(highScore))
				elif orangeSnakeScore > purpleSnakeScore:
					print("Orange Snake Wins! Score: " + str(orangeSnakeScore))
					if orangeSnakeScore > highScore:
						highScore = orangeSnakeScore
						print("NEW HIGH SCORE: " + str(highScore))
				else:
					print("Draw!")
					# It doesn't really matter which score we use here since they're the same
					if orangeSnakeScore > highScore:
						highScore = orangeSnakeScore
						print("NEW HIGH SCORE: " + str(highScore))
			else:
				if purpleSnakeScore > highScore:
					highScore = purpleSnakeScore
					print("NEW HIGH SCORE: " + str(highScore))
				else:
					print("Last Game's Score: " + str(purpleSnakeScore))
					print("High Score: " + str(highScore))
			openMainMenu()
		else:
			screen.fill(black)
			boundBox(screen)
			# Draw Scores
			snakeScore = scoreFont.render("PURPLE SCORE: " + str(snake.length - 10), 1, white)
			screen.blit(snakeScore, (blockUnit, 2))
			if multiPlayerMode:
				orangeScoreText = "ORANGE SCORE: " + str(snakeB.length - 10)
				snakeBScore = scoreFont.render(orangeScoreText, 1, white)
				screen.blit(snakeBScore, ((WIDTH + 1)*blockUnit - scoreFont.size(orangeScoreText)[0], 2))

			# Draw Snakes and Food
			snake.draw()
			object.draw()
			if multiPlayerMode:
				snakeB.draw()
				objectB.draw()
			pg.display.flip()

			# Check if snakes are eating food
			if object.getPos() == snake.getHeadPos():
				snake.grow()
				# food should not appear where the snake is
				object.__init__(screen, 1, HEIGHT + 1, 1, WIDTH + 1)
				while object.getPos() in snake.getPosList():
					object.__init__(screen, 1, HEIGHT + 1, 1, WIDTH + 1)
					snake.incLength()
				# increase game speed
				# if eaten % SPEED_INC == 0:
				#	SPEED += SPEED_TICK

			if multiPlayerMode:
				if objectB.getPos() == snakeB.getHeadPos():
					snakeB.grow()
					# food should not appear where the snake is
					objectB.__init__(screen, 1, HEIGHT + 1, 1, WIDTH + 1)
					while objectB.getPos() in snakeB.getPosList():
						objectB.__init__(screen, 1, HEIGHT + 1, 1, WIDTH + 1)
						snakeB.incLength()
						# increase game speed
						#if eaten % SPEED_INC == 0:
						#	SPEED += SPEED_TICK

			#game speed control
			clock.tick(SPEED)

			# get the next event on queue
			event = pg.event.poll()
			if event.type == pg.QUIT:
				running = False
				pg.quit()
				sys.exit()
			elif event.type == pg.KEYDOWN:
				actmotdir = snake.getMotionDir()
				if event.key == pg.K_ESCAPE:
					running = False
					pg.quit()
					sys.exit()
				elif event.key == pg.K_UP and actmotdir != snk.DOWN:
					snake.setMotionDir(snk.UP)
				elif event.key == pg.K_DOWN and actmotdir != snk.UP:
					snake.setMotionDir(snk.DOWN)
				elif event.key == pg.K_RIGHT and actmotdir != snk.LEFT:
					snake.setMotionDir(snk.RIGHT)
				elif event.key == pg.K_LEFT and actmotdir != snk.RIGHT:
					snake.setMotionDir(snk.LEFT)

				if multiPlayerMode:
					actmotdir2 = snakeB.getMotionDir()
					if event.key == pg.K_w and actmotdir2 != snk2.DOWN:
						snakeB.setMotionDir(snk2.UP)
					elif event.key == pg.K_s and actmotdir2 != snk2.UP:
						snakeB.setMotionDir(snk2.DOWN)
					elif event.key == pg.K_d and actmotdir2 != snk2.LEFT:
						snakeB.setMotionDir(snk2.RIGHT)
					elif event.key == pg.K_a and actmotdir2 != snk2.RIGHT:
						snakeB.setMotionDir(snk2.LEFT)

			# remove the snake and make movement
			snake.remove()
			snake.move()
			if multiPlayerMode:
				snakeB.remove()
				snakeB.move()
Пример #35
0
pg.init()

# initializing mixer, sounds, clock and screen
pg.mixer.init()
eatsound = pg.mixer.Sound("snakeeat.wav")
crashsound = pg.mixer.Sound("snakecrash.wav")
clock = pg.time.Clock()
screen = pg.display.set_mode(((WIDTH+2)*snk.BLOCK_SIZE,(HEIGHT+2)*snk.BLOCK_SIZE))
pg.display.set_caption("snake")
font = pg.font.SysFont(pg.font.get_default_font(),40)
gameovertext = font.render("GAME OVER",1,WHITE)
starttext = font.render("PRESS ANY KEY TO START",1,WHITE)
screen.fill(BLACK)

# we need a snake and something to eat
snake = snk.snake(screen,WIDTH/2,HEIGHT/2)
food = fd.food(screen,1,HEIGHT+1,1,WIDTH+1)

# food should not appear where the snake is
while food.getPos() in snake.getPosList():
	food.__init__(screen,1,HEIGHT+1,1,WIDTH+1)

# only queue quit and and keydown events
# pg.event.set_allowed([pg.QUIT,pg.KEYDOWN])
pg.event.set_blocked([pg.MOUSEMOTION,pg.MOUSEBUTTONUP,pg.MOUSEBUTTONDOWN])

# will increase game speed every 10 times we eat
eaten = 0

# press any key to start!!!
drawWalls(screen)