Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
5feb115
Update proposal
AndrewLevy395 Oct 3, 2019
f3b2b3d
Update proposal.md
AndrewLevy395 Oct 3, 2019
b77872d
added rules
AndrewLevy395 Oct 3, 2019
19ac41b
Update proposal.md
AndrewLevy395 Oct 3, 2019
ae712aa
Update proposal.md
ArchdukeTim Oct 3, 2019
4aa0593
first commit
AndrewLevy395 Oct 7, 2019
f715a31
Merge pull request #1 from ArchdukeTim/patch-1
AndrewLevy395 Oct 7, 2019
85efd2e
randomize card teams and order
AndrewLevy395 Oct 7, 2019
79ef978
Merge https://github.com/AndrewLevy395/fp
AndrewLevy395 Oct 7, 2019
3c8c5e1
chatbox
AndrewLevy395 Oct 8, 2019
4a5f58f
Improve DOM
ArchdukeTim Oct 9, 2019
45d6da9
Final touches to UI
ArchdukeTim Oct 9, 2019
d990f75
Merge pull request #2 from ArchdukeTim/master
AndrewLevy395 Oct 9, 2019
c837884
fix height in chrome
ArchdukeTim Oct 9, 2019
90cf951
Merge pull request #3 from ArchdukeTim/master
AndrewLevy395 Oct 9, 2019
487e92d
added basic socketing when buttons are clicked
Oct 9, 2019
27d7beb
info and key modals
AndrewLevy395 Oct 9, 2019
3605035
MORE SOCKETS
Oct 10, 2019
b2e52ce
MORE SOCKETS
Oct 10, 2019
8a9a0ec
Merge remote-tracking branch 'origin/master'
Oct 10, 2019
9c25e3c
main menu
AndrewLevy395 Oct 10, 2019
eaad2d3
Merge https://github.com/AndrewLevy395/fp
AndrewLevy395 Oct 10, 2019
a7c80d4
Add hint support
ArchdukeTim Oct 10, 2019
0bacd29
Merge pull request #4 from ArchdukeTim/master
AndrewLevy395 Oct 10, 2019
c018ca4
selected button
AndrewLevy395 Oct 10, 2019
f12b736
Merge https://github.com/AndrewLevy395/fp
AndrewLevy395 Oct 10, 2019
d60ebf6
sckt
Oct 10, 2019
96857b9
Merge branch 'master' of https://github.com/AndrewLevy395/fp
Oct 10, 2019
731814b
server/menu fixes
AndrewLevy395 Oct 10, 2019
c93cba4
role selection1
Oct 10, 2019
2fa779d
Merge remote-tracking branch 'origin/master'
Oct 10, 2019
2ed1498
changed how to play
AndrewLevy395 Oct 10, 2019
31a16d1
Merge https://github.com/AndrewLevy395/fp
AndrewLevy395 Oct 10, 2019
e1645bf
MODALS ARE HARD
Oct 10, 2019
6e75c7e
Merge branch 'master' of https://github.com/AndrewLevy395/fp
Oct 10, 2019
2304069
removed key and fixed info
AndrewLevy395 Oct 10, 2019
dfb9955
removed key and fixed info
AndrewLevy395 Oct 10, 2019
03769c4
Broadcast chat to all clients
ArchdukeTim Oct 10, 2019
0bc42ec
Play closes all modals
ArchdukeTim Oct 10, 2019
cf8ad43
removed key and fixed info
AndrewLevy395 Oct 10, 2019
7ac9001
Remove merge conflict
ArchdukeTim Oct 10, 2019
fb0d61b
merge
AndrewLevy395 Oct 10, 2019
8e8e682
Merge https://github.com/AndrewLevy395/fp
AndrewLevy395 Oct 10, 2019
7ae4c08
shtuff
Oct 10, 2019
56b6c26
Merge branch 'master' of https://github.com/AndrewLevy395/fp
Oct 10, 2019
42d510a
added borders
AndrewLevy395 Oct 10, 2019
7a5f1de
Merge https://github.com/AndrewLevy395/fp
AndrewLevy395 Oct 10, 2019
ed77b1d
Hide chat box for detectives
ArchdukeTim Oct 10, 2019
0a4dfcd
fixed borders
AndrewLevy395 Oct 10, 2019
2d88992
resetting roles works
Oct 10, 2019
ee7ff64
Merge branch 'master' of https://github.com/AndrewLevy395/fp
Oct 10, 2019
a4770b0
Added backend turn logic and screenlock css
Oct 10, 2019
a00f4ac
Show correct card colors for spymasters and detectives
AndrewLevy395 Oct 10, 2019
eee69d2
Make chat scrollable
ArchdukeTim Oct 10, 2019
df98c39
small ui fixes
AndrewLevy395 Oct 10, 2019
73e7eed
Implement turn logic
ArchdukeTim Oct 10, 2019
97ccb70
roles are shown and buttons have hovers and colors
Oct 10, 2019
99bea9c
Merge branch 'master' of https://github.com/AndrewLevy395/fp
Oct 10, 2019
9a692eb
Add decreasing hint count
ArchdukeTim Oct 10, 2019
6031a88
coloring for roles
Oct 10, 2019
0abef98
Merge branch 'master' of https://github.com/AndrewLevy395/fp
Oct 10, 2019
b774795
Prevent spymaster from guessing
ArchdukeTim Oct 10, 2019
bc82e5e
reset button for game working
Oct 10, 2019
185e4cb
Merge branch 'master' of https://github.com/AndrewLevy395/fp
Oct 10, 2019
2f02545
Added README
dandaman2 Oct 10, 2019
fa9b1a6
Update README.md
AndrewLevy395 Oct 10, 2019
b6e7b0e
Merge branch 'master' into master
AndrewLevy395 Oct 10, 2019
e69283e
Update README.md
AndrewLevy395 Oct 10, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"git.ignoreLimitWarning": true
}
95 changes: 37 additions & 58 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,60 +1,39 @@
# cs4241-FinalProject

For your final project, you'll implement a course project that exhibits your mastery of the course materials.
Similar to A4, this project gives you an opportunity to be creative and to pursue individual research and learning.

## General description

Your project should consist of a complete Web application, exhibiting facets of the three main sections of the course material:

- Static Web page content and design. You should have a project that is accessible, easily navigable, and features significant content.
- Dynamic behavior implemented with JavaScript.
- Server-side programming *using Node.js*. Typically this will take the form of some sort of persistent data, authentication, and possibly server-side computation.

Additionally, you should incorporate features that you independently research, design, and implement for your project.

## Project ideation

Excellent projects serve someone/some group; for this assignment you need to define your users and stakeholders. I encourage you to identify projects that will have impact, either artistically, politically, or in terms of productivity. Consider creating something useful for a cause or hobby you care about.

## Logistics

### Team size
Students are encouraged to work in teams of 2-5 students for the project. This will allow you to build a good project without expending an excessive amount of effort. While I would expect a team of four or five students to produce a project with more features, I expect a every team's work to exhibit all of the required facets described above.

### Deliverables

__Proposal:__
Provide an outline of your project direction and the names of the team members.
The outline should have enough detail so that staff can determine if it meets the minimum expectations, or if it goes too far to be reasonable by the deadline.
This file must be named proposal.md so we can find it.
Submit a PR to turn it in by Monday, September 30th, before class

There are no other scheduled checkpoints for your project.
You must be done in time to present before the final project demo day (October 10th).

#### Turning in Your Outline / Project

**NOTE: code is due before the project presentation day due to the end of term / grading schedule constraints**
Submit a second PR on the final project repo to turn in your app and code.

Deploy your app, in the form of a webpage, to Glitch/Heroku/Digital Ocean or some other service.
Folks on the same team do not need to post the same webpage, but must instead clearly state who is on the team in their proposal.

The README for your second pull request doesn’t need to be a formal report, but it should contain:

1. A brief description of what you created, and a link to the project itself.
2. Any additional instructions that might be needed to fully use your project (login information etc.)
3. An outline of the technologies you used and how you used them.
4. What challenges you faced in completing the project.
5. What each group member was responsible for designing / developing.

Think of 1,3, and 4 in particular in a similar vein to the design / tech achievements for A1—A4… make a case for why what you did was challenging and why your implementation deserves a grade of 100%.

## Final Presentation

Presentations will occur during the final day of class in *Riley Commons*.

## FAQs

- **Can I use XYZ framework?** You can use any web-based frameworks or tools available, but for your server programming you need to use node.js.
## Team Members
- Daniel Duff
- Timothy Winters
- Andrew Levy

**Codenames**
For our Final Project, we implemented a multiplayer game called "Codenames", an electronic version of a fun and collaborative card game.
(rules can be found here: https://czechgames.com/files/rules/codenames-rules-en.pdf).

Using JavaScript's Socket.io and Socket.io-client libraries we were able to create an application that communicates with a Node.js server,
and updates client real-time. This was mainly used for implementing a constant game state (and storing that information on the server),
as well as updating player's turn order. Maintaining game state, as well as ensuring it was consistent among multiple clients (as well as
updating that information real-time) was very challenging, as it was something none of us had any prior experience with. Ensuring
all socket information was kept up-to-date in addition to random board setup generation was a task which we struggled with tackling at first,
however we were able to overcome our difficulties!

**How To Run**
We were unable to place the game on a remote client due to socketing conflicts. In the future we're hoping to get this to work so that people can play our game online. The game can be run by running npm intall and then npm start in the app package.json directory. After running these commands the application can be accessed via localhost:3000 in a browser. Multiple tabs can count as multiple players (for testing purposes) as long as they are connected to localhost:3000 as well.


## This project features:
- A React.js front-end framework that dynamically renders DOM elements for players.
- Modularization in the implementation of the React.js frontend.
- Useage of the Socket.io and Socket.io-client libraries to maintain game state and interact with React components.
- A simple Node.js database which maintains game state, as well as storing card, socket, and player information.
- CSS Stylesheets that are dynamically implemented into Javascript Components.
- State manipulation and 'locking' of user input when it's not their turn (as well as 'unlocking' on the correct turn).
- Codename's base logic ruleset.
- Elements of the game which are meant to be hidden from players cannot be seen or accessed via the browser directly
(thus preventing cheating by inspecting the page's HTML).

This project was a very collaborative effort, as multiple members did multiple tasks.
- Creation and Manipulation of React.js framework: Andrew, Tim.
- CSS Styling, images, and additional help menu: Andrew
- Creation of Socket Communication: Daniel, Tim.
- Creation of Backend Node.js and Socket.io setup: Daniel.
- Refactoring and State Manipulation (as well as hiding game elements from browser's DOM lookup): Tim.
23 changes: 23 additions & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
68 changes: 68 additions & 0 deletions app/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

## Available Scripts

In the project directory, you can run:

### `npm start`

Runs the app in the development mode.<br />
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.

The page will reload if you make edits.<br />
You will also see any lint errors in the console.

### `npm test`

Launches the test runner in the interactive watch mode.<br />
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.

### `npm run build`

Builds the app for production to the `build` folder.<br />
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.<br />
Your app is ready to be deployed!

See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.

### `npm run eject`

**Note: this is a one-way operation. Once you `eject`, you can’t go back!**

If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.

You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.

## Learn More

You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).

To learn React, check out the [React documentation](https://reactjs.org/).

### Code Splitting

This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting

### Analyzing the Bundle Size

This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size

### Making a Progressive Web App

This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app

### Advanced Configuration

This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration

### Deployment

This section has moved here: https://facebook.github.io/create-react-app/docs/deployment

### `npm run build` fails to minify

This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
Loading