Giter VIP home page Giter VIP logo

c4's Introduction

c4

Test Deploy

c4, stands for Connect Four, is a browser game written in TypeScript and utilizes HTML's canvas. Player is playing against an AI that uses Minimax algorithm and alpha-beta pruning. The evaluation function is hard-coded, and hence the AI may not be moving using the most optimal move.

Play

Gameplay

Screenshot 2024-03-07 202120

Objective

Connect four of your game pieces vertically, horizontally, or diagonally before the other player do so.

How to move?

At each turn, player will drop a game piece in one of the seven columns by clicking on the chosen column.

More info

Read Wikipedia page on Connect Four

Browser compatibility

Should be good in latest Firefox, Edge, Chrome, and Safari.

Contributing

Contributions are welcome! I'm happy to accept any kind of contributions, pull requests, or bug reports.

Developing

  1. Fork and clone this repository
  2. Install dependencies
yarn install
  1. Start local development server
yarn start
  1. Make your changes at either browser/, core/, or server/
  2. Test it out at http://localhost:5173/
  3. After you are happy with your changes, please submit your Pull Request!

License

This work is licensed under MIT License.

c4's People

Contributors

dependabot[bot] avatar kenrick95 avatar voltrexkeyva avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

c4's Issues

All cells changes visible radius when drop animation running

It can be solved, just replace draw in function animate:

if (to_row * this.circleRadius >= cur_pos) {
            this.clear();
            //this.draw(); current call position
            this.drawCircle(this.circleRadius * column + 50, cur_pos + 50, 25, fg_color, "black");
            this.drawMask();
            this.draw(); // call draw() there to solve radius changing
            window.requestAnimationFrame(function () {
                that.animate(column, move, to_row, cur_pos + 25, callback);
            });
        } else {
            callback();
        }

Stupid turn

Not sure if it counts as a bug, but I find it too obvious.
Just placed that red on the 6th column and the game put a blue on the first. Or was it by design?
screenshot
Log, if can help: http://pastebin.com/AAAjUXEw

Maybe is it a bug

When player 1 puts a chess in the middle column, and then it is always placed on the top of player 2, it is always a draw. I don't know if this is a bug

Game hangs when player choose full column

When column is full, player can still choose the column and the game hangs (game state does not change, no player can do action).

  • Add checking before accepting the action to fill the full column.

I want to translate this project.

I would like to translate this project, even though it is simple enough. I want to share this project with my friends who are not very good at English, how do I go about doing that? Thanks!
One more question, can this project be done through web server only, using yarn to run the project is not as easy to manage on the server as on the web. I really like this project and would like to get a reply.

Mention 'yarn start' for development

Motivation

On the README section, after installing dependencies, it is said to generate dist/ folder and open index.html in the browser.

I saw that #7 moved the project to Parcel. Hence, simple yarn start should suffice and it will even enable live reload. Available at http://localhost:1234/

image

Refactoring and testing

Hey,

I am new to TypeScript and open source and I found your game to be an amazing repository to learn and practice TypeScript by refactoring and writing tests for your code.

I would like to contribute a little to the repo on a daily basis and would love it if you could review my code daily and suggest changes.

Playing online against another human.

It would be nice if one could play against another human over the network / Internet or however they have access to the server running the game. If you plan for something like this on your own, I encourage you to implement this.
If you do not plan this on your own yet, I am willing to make this my own task and submit a PR when I am ready.
Please let me know what you think about it. :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.