Ejemplo n.º 1
0
def test_board_initial_state():
    board = Board()
    board._populate_with_default()
    nose.tools.ok_(isinstance(board['a1'], Rook))
    nose.tools.ok_(isinstance(board['b1'], Knight))
    nose.tools.ok_(isinstance(board['c1'], Bishop))
    nose.tools.ok_(isinstance(board['d1'], Queen))
    nose.tools.ok_(isinstance(board['e1'], King))
    nose.tools.ok_(isinstance(board['f1'], Bishop))
    nose.tools.ok_(isinstance(board['g1'], Knight))
    nose.tools.ok_(isinstance(board['h1'], Rook))
    nose.tools.ok_(isinstance(board['a8'], Rook))
    nose.tools.ok_(isinstance(board['b8'], Knight))
    nose.tools.ok_(isinstance(board['c8'], Bishop))
    nose.tools.ok_(isinstance(board['d8'], Queen))
    nose.tools.ok_(isinstance(board['e8'], King))
    nose.tools.ok_(isinstance(board['f8'], Bishop))
    nose.tools.ok_(isinstance(board['g8'], Knight))
    nose.tools.ok_(isinstance(board['h8'], Rook))

    for col in COLUMNS:
        nose.tools.ok_(isinstance(board[col + '2'], Pawn))
        nose.tools.ok_(isinstance(board[col + '7'], Pawn))
        nose.tools.eq_(board[col + '1'].color, Color.White)
        nose.tools.eq_(board[col + '2'].color, Color.White)
        nose.tools.eq_(board[col + '3'], None)
        nose.tools.eq_(board[col + '4'], None)
        nose.tools.eq_(board[col + '5'], None)
        nose.tools.eq_(board[col + '6'], None)
        nose.tools.eq_(board[col + '7'].color, Color.Black)
        nose.tools.eq_(board[col + '8'].color, Color.Black)
Ejemplo n.º 2
0
class TextPresenter:
    def __init__(self):
        self._board = Board()

    def get_piece_from_location(self, location):
        return self._board.get_piece_from_location(location)

    def print_board(self):
        for i in range(7, -1, -1):
            row = str(i + 1) + " "
            for j in range(7, -1, -1):
                piece_on_location = self.get_piece_from_location((i, j))
                if (i + j) % 2 == 1:
                    row += " " + piece_on_location + " "
                else:
                    row += "[" + piece_on_location + "]"
            print(row)
        final_row = "   A  B  C  D  E  F  G  H"
        print(final_row)

    def move_piece(self, loc_str, new_loc_str):
        try:
            location = Location(loc_str)
            new_location = Location(new_loc_str)
            self.move(location, new_location)
        except (InvalidMoveException, InvalidLocationException):
            print("Invalid move: " + loc_str + " -> " + new_loc_str)

    def validate_move(self, location, new_location):
        pass

    def move(self, location, new_location):
        self.validate_move(location, new_location)
        self._board.get_piece_from_location()
Ejemplo n.º 3
0
def run_AI_battle(player1, player2, gameNumber):
    if isinstance(player1, AI_Player) and isinstance(player2, AI_Player):
        p1Win = 0
        p2Win = 0
        draw = 0
        for i in range(int(gameNumber / 2)):
            board = Board()
            player1.set_board(board)
            player2.set_board(board)
            game = AI_Game(board, player1, player2)
            res = game.run()
            if res == 0:
                p1Win += 1
            elif res == 1:
                p2Win += 1
            else:
                draw += 1
            print(res)
        for i in range(gameNumber - int(gameNumber / 2)):
            board = Board()
            player1.set_board(board)
            player2.set_board(board)
            game = AI_Game(board, player2, player1)
            res = game.run()
            if res == 0:
                p2Win += 1
            elif res == 1:
                p1Win += 1
            else:
                draw += 1
            print(res)
        return [p1Win, p2Win, draw]
    else:
        print("Erreur : Les 2 joueurs doivent être des IA")
Ejemplo n.º 4
0
def test_board_move_exceptions():
    board = Board()
    board._populate_with_default()
    nose.tools.assert_raises(InvalidLocationException,
                             board.move, 'dg3', 'd4')
    nose.tools.assert_raises(EmptyLocationException,
                             board.move, 'd3', 'd4')
    nose.tools.assert_raises(EmptyLocationException,
                             board.move, 'd5', 'd2')
Ejemplo n.º 5
0
def add():
    u = current_user()
    if not u:
        return redirect(url_for("topic.index"))
    if request.method == "GET":
        return render_template("board/add_board.html")
    else:
        Board.new_and_save(request.form)
    return redirect(url_for("topic.index"))
Ejemplo n.º 6
0
class Chess():
    def __init__(self):
        self.board = Board()
        self.win = None

        self.setup()

    def setup(self):
        print("Welcome to Chess, type 'Start' to play.")
        while (input().lower() != "start"):
            pass
        self.running()

    def running(self):
        while self.win == None:
            self.playerTurn()
            if not self.win:
                self.aiTurn()

    def playerTurn(self):
        self.board.toString()
        print("Type 'move yx' where y is A to H and x is 1 to 8.")
        command = ""
        while self.invalidCommand(command):
            command = input()
            print("Invalid Command")
        words = command.split(' ')
        piece = self.board.get(words[1])
        print(piece.toString())

    def invalidCommand(self, command):
        try:
            words = command.split(' ')
            if words[0] != "move":
                return True
            if words[2] != "to":
                return True
            if not isCoords(words[1]):
                return True
            if not isCoords(words[3]):
                return True
            return False
        except:
            return True

    def isCoords(self, coords):
        if coords[0] in ROWS:
            if coords[1] in range(8):
                return True
        return False

    def aiTurn(self):
        pass
Ejemplo n.º 7
0
def resolve_battle_handler():
    data = request.get_json()

    board1 = Board.from_dict(data['player1'])
    board2 = Board.from_dict(data['player2'])

    winner, player_hp_change, log = resolve_battle(board1, board2)

    return {
        "winner": winner,
        "playerHpChange": player_hp_change,
        "log": log,
    }
Ejemplo n.º 8
0
def run():
    # Board
    board = Board()

    # AI
    # P1
    #oracle1 = AI_MonteCarlo(board, Co.P1_PIECE, 3000)
    #player1 = AI_Player("Player 1", oracle1.board, oracle1.piece, oracle1)

    oracle2 = AI_MonteCarlo_Up_Heur(board, Co.P2_PIECE, 1000)
    player2 = AI_Player("Player 2", oracle2.board, oracle2.piece, oracle2)

    # Human
    player1 = Player("Player 1", board, Co.P1_PIECE)
    #player2 = Player("Player 2", board, Co.P2_PIECE)

    # View
    #view = TextView()
    view = GraphicView()

    # Game / Controller
    game = Game(board, player1, player2, view)
    res = game.run()
    if isinstance(view, GraphicView):
        time.sleep(5)
    print(res)
Ejemplo n.º 9
0
def mainGUI():
    app = QApplication(sys.argv)

    try:
        # ajout de l'id de l'application
        myappid = 'ValentinLe.lecteur_musique'
        ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
    except AttributeError:
        pass

    # ajout de l'icone de l'application
    app.setWindowIcon(QIcon(QPixmap("assets/logo.ico")))

    # couleurs pour la scrollBar
    palette = QPalette()
    palette.setColor(QPalette.Base, QColor("#454545"))
    palette.setColor(QPalette.Light, QColor("#454545"))
    app.setPalette(palette)

    # affichage de la fenetre principale
    board = Board()
    window = MainWindow(board)
    window.setWindowTitle("Musique")
    window.showMaximized()
    # window.show()

    sys.exit(app.exec_())
Ejemplo n.º 10
0
def main():
    board = Board()
    engine = GameEngine(board)
    cross_player = AIPlayer(1, "dude", engine)
    noughts_player = HumanPlayer(-1, "Rand", engine)
    view = BoardView(board)
    done = False
    view.update()
    while not done:
        try:
            cross_player.make_move()
            view.update()
            if engine.game_ended():
                view.reset()
                continue
            noughts_player.make_move()
            view.update()
            if engine.game_ended():
                view.reset()
                continue
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    done = True
        except Exception:
            traceback.print_exc()
Ejemplo n.º 11
0
 def get_board(self, board_id):
     url = self.base_url + board_id
     response = self.initialize_board(url)
     if response is not None:
         data = response.json()
         return Board(data)
     else:
         return
Ejemplo n.º 12
0
 def init_game(self, size):
     self.board = Board(size)
     self.speed = 10
     self.prev_limit = 0
     self.level_limit = 500
     self.level = 1
     self.score = 0
     self.player.init()
Ejemplo n.º 13
0
Archivo: Topic.py Proyecto: Timuer/BBS
 def new_and_save(cls, form=None, **kwargs):
     m = cls.new(form, **kwargs)
     user_id = form.get("user_id")
     user = User.find_by_id(int(user_id))
     m.username = user.username
     board_id = form.get("board_id")
     m.board = Board.find_by_id(board_id).title
     m.save()
     return m
Ejemplo n.º 14
0
def add():
    u = current_user()
    if not u:
        return redirect(url_for("auth.login"))
    if request.method == "GET":
        boards = Board.all()
        return render_template("topic/add.html", user_id=u.id, boards=boards)
    Topic.new_and_save(request.form)
    return redirect(url_for(".index"))
Ejemplo n.º 15
0
def index():
    board_id = request.args.get("board", None)
    if board_id:
        board_id = int(board_id)
    topics = get_topics(board_id)
    boards = Board.all()
    user = current_user()
    return render_template("topic/index.html",
                           user=user,
                           topics=topics,
                           board_id=board_id,
                           boards=boards)
Ejemplo n.º 16
0
def setup_boards(json_settings):
    for board_info in json_settings["boards"]:
        name = board_info["name"]
        threadlimit = board_info.get("threadlimit") or json_settings["default_threadlimit"]
        mimetypes = board_info.get("mimetypes")
        if mimetypes is None:
            mimetypes = json_settings["default_mimetypes"]
            extra_mimetypes = board_info.get("extra_mimetypes")
            if extra_mimetypes:
                mimetypes = mimetypes + "|" + extra_mimetypes
        rule_file = board_info.get("rules")
        rules = ""
        if rule_file:
            rules = open(os.path.join("deploy-configs", rule_file)).read()
        board = Board(name=name, max_threads=threadlimit, mimetypes=mimetypes, rules=rules)
        db.session.add(board)
Ejemplo n.º 17
0
def test_init():
    d = {
        "units": [
            {
                "id": "43",
                "attack": 1,
                "defense": 10,
                "magicResist": 10,
                "criticalChance": 40,
                "hp": 100,
                "range": 40,
                "attackSpeed": 10,
                "type": "MAGICAL/PHYSICAL",
                "price": 100
            },
            {
                "id": "44",
                "attack": 1,
                "defense": 10,
                "magicResist": 10,
                "criticalChance": 40,
                "hp": 100,
                "range": 40,
                "attackSpeed": 10,
                "type": "MAGICAL/PHYSICAL",
                "price": 100
            },
        ],
        "unitsPlacement": [
            {"unitId": "43", "x": 2, "y": 3},
            {"unitId": "44", "x": 5, "y": 7},
        ],
    }
    board = Board.from_dict(d)

    assert len(board.tokens) == 2

    token43, token44 = board.tokens

    assert token43.unit.id == "43"
    assert token43.position == (2, 3)

    assert token44.unit.id == "44"
    assert token44.position == (5, 7)
Ejemplo n.º 18
0
    def __init__(self):
        self.board = Board()
        self.win = None

        self.setup()
Ejemplo n.º 19
0
import os


from customjsonencoder import CustomJSONEncoder
from model.Board import Board
from model.Slip import gen_slip
from model.Tag import Tag
import model.Media
import model.Poster
from shared import db

db.create_all()
# set up some boards
for board_name in ("anime", "tech", "meta", "politics", "gaming", "music"):
    board = Board(name=board_name)
    db.session.add(board)
# admin credentials generation
admin = gen_slip("admin", "admin")
admin.is_admin = True
db.session.add(admin)
# special tags
for tag_name, bg_style, text_style in (("general", "bg-secondary", "text-light"),):
    tag = Tag(name=tag_name, bg_style=bg_style, text_style=text_style)
    db.session.add(tag)
db.session.commit()
# write a secret so we can have session support
open("secret", "w").write(str(os.urandom(16)))
# create upload and thumbnail directory if necessary
if not os.path.exists("uploads/thumb"):
    os.makedirs("uploads/thumb")
Ejemplo n.º 20
0
 def __init__(self):
     self._board = Board()
Ejemplo n.º 21
0
from model.Snake import Snake
from model.Board import Board
from tkinter import Tk, Label, Button
import tkinter as tk

snake = Snake(0, 0, 3, 2)
board = Board(20, 20)


class MyFirstGUI:
    def __init__(self, master):
        self.master = master
        master.title("PythonGame - Snake inspired")

        self.label = Label(master, text="Hello in PythonGame!")
        self.label.pack()

        self.greet_button = Button(master, text="Start!", command=self.greet)
        self.greet_button.pack()

        self.close_button = Button(master,
                                   text="Hall Of Fame",
                                   command=self.hall_of_fame)
        self.close_button.pack()

        self.close_button = Button(master, text="Exit", command=master.quit)
        self.close_button.pack()

    def greet(self):
        print("Greetings!")
Ejemplo n.º 22
0
def test_move_pawn_forward_one():
    board = Board()
    board._populate_with_default()
    board.move('d2', 'd3')
    nose.tools.ok_(isinstance(board['d3'], Pawn))
    nose.tools.ok_(board.is_location_empty('d2'))
Ejemplo n.º 23
0
    board = Board.from_dict(d)

    assert len(board.tokens) == 2

    token43, token44 = board.tokens

    assert token43.unit.id == "43"
    assert token43.position == (2, 3)

    assert token44.unit.id == "44"
    assert token44.position == (5, 7)


@pytest.mark.parametrize('board, expected', [
    (
        Board([]),
        False
    ),
    (
        Board([
            Token(Unit(id=2, hp=0), (3, 5))
        ]),
        False
    ),
    (
        Board([
            Token(Unit(id=2, hp=100), (3, 5))
        ]),
        True
    ),
    (
Ejemplo n.º 24
0
def test_board_is_location_empty():
    board = Board()
    nose.tools.ok_(board.is_location_empty("d2"))
    nose.tools.ok_(board.is_location_empty("a1"))
    nose.tools.ok_(board.is_location_empty("h7"))
Ejemplo n.º 25
0
def index():
    if get_slip() and get_slip().is_admin:
        boards = db.session.query(Board).all()
        slips = db.session.query(Slip).all()
        if (request.method == "POST"):
            for slip in slips:
                admin_status = request.form.getlist(slip.name + "_grant_admin")
                mod_status = request.form.getlist(slip.name + "_grant_mod")
                revoke_slip = request.form.getlist(slip.name + "_revoke_slip")
                new_board_name = request.form.getlist("board_name")

                # editing mod/admin status
                if (len(admin_status) > 0 and admin_status[0] == "on"):
                    slip.is_admin = True
                else:
                    slip.is_admin = False

                if (len(mod_status) > 0 and mod_status[0] == "on"):
                    slip.is_mod = True
                else:
                    slip.is_mod = False

                old_slip = db.session.query(Slip).filter(
                    Slip.name == slip.name).one()
                old_slip.is_admin = slip.is_admin
                old_slip.is_mod = slip.is_mod

                # revoking slip
                if (len(revoke_slip) > 0 and revoke_slip[0] == "on"):
                    db.session.query(Slip).filter(
                        Slip.name == slip.name).delete()

            # add board
            if (len(new_board_name) > 0 and len(new_board_name[0]) > 0):
                # check to see that board already exists
                existing_boards = db.session.query(Board).filter(
                    Board.name == new_board_name[0]).all()
                if (len(existing_boards) == 0):
                    new_board = Board(name=new_board_name[0],
                                      max_threads=50,
                                      mimetypes="",
                                      rules="",
                                      subreddits="")
                    db.session.add(new_board)

            # Delete board
            for board in boards:
                delete_board = request.form.getlist(board.name +
                                                    "_delete_board")
                if (len(delete_board) > 0 and delete_board[0] == "on"):
                    boards_to_delete = db.session.query(Board).filter(
                        Board.name == board.name).all()
                    for tmp_board in boards_to_delete:
                        threads_to_delete = db.session.query(Thread).filter(
                            Thread.board == tmp_board.id).all()
                        for thread in threads_to_delete:
                            posts_to_delete = db.session.query(Post).filter(
                                Post.thread == thread.id).all()
                            for post in posts_to_delete:
                                db.session.query(Post).filter(
                                    Post.id == post.id).delete()
                            db.session.query(Thread).filter(
                                Thread.id == thread.id).delete()
                        db.session.query(Board).filter(
                            Board.id == tmp_board.id).delete()
            db.session.commit()

            # edit FAQ
            faq = request.form.getlist("faq")
            if (len(faq) > 0):
                faq = faq[0]

            # edit rules
            rules = request.form.getlist("rules")
            if (len(rules) > 0):
                rules = rules[0]

        elif (request.method == "GET"):
            print("doing nothing")
        return render_template("site-admin.html",
                               boards=boards,
                               slips=slips,
                               faq=render_template("faq.html"),
                               rules=render_template("rules.html"))

    else:
        flash("Only admins can access board administration!")
        return redirect(url_for("main.faq"))