0% found this document useful (0 votes)
5 views24 pages

Mad Report

The document is a project report for a Rock Paper Scissors game developed by Sandhiya M as part of her Bachelor of Technology degree at Ramco Institute of Technology. The game is a mobile application built using Flutter and Dart, focusing on providing an ad-free, offline experience with both single-player and local multiplayer modes. The report includes sections on project description, system requirements, design, implementation methodology, and acknowledgments, highlighting the game's user-friendly interface and privacy-oriented features.

Uploaded by

953622205037
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views24 pages

Mad Report

The document is a project report for a Rock Paper Scissors game developed by Sandhiya M as part of her Bachelor of Technology degree at Ramco Institute of Technology. The game is a mobile application built using Flutter and Dart, focusing on providing an ad-free, offline experience with both single-player and local multiplayer modes. The report includes sections on project description, system requirements, design, implementation methodology, and acknowledgments, highlighting the game's user-friendly interface and privacy-oriented features.

Uploaded by

953622205037
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 24

ROCK PAPER SCISSORS GAME

A MINI PROJECT REPORT

Submitted by

SANDHIYA M (953622205037)

In partial fulfillment for the award of the degree of

BACHELOR OF TECHNOLOGY

RAMCO INSTITUTE OF TECHNOLOGY

DEPARTMENT OF INFORMATION TECHNOLOGY

RAJAPALAYAM-626 117

ANNA UNIVERSITY: CHENNAI 600 025

APRIL 2025

ANNA UNIVERSITY, CHENNAI


BONAFIED CERTIFICATE

Certified that this Report titled “ROCK PAPER SCISSORS GAME” is the
bonafide work of SANDHIYA M (953622205037) who carried out the work
under my supervision. Certified further that to the best of my knowledge the
work reported herein does not form part of any other thesis or dissertation on
the basis of which a degree or award was conferred on an earlier occasion on
this or any other candidate.

SIGNATURE SIGNATURE
M. Rethina kumari Dr. V. Anusuya
SUPERVISOR HEAD OF THE DEPARTMENT
Assistant Professor, Associate Professor,
Department of Information Technology, Department of
InformatioTechnology,
Ramco Institute of Technology Ramco Institute of Technology
Rajapalayam-626 112. Rajapalayam-626 112.

Submitted for the Project Viva-Voce held on ………………..

Internal Examiner External Examiner


DECLARATION

We hereby declare that the project work entitled “ROCK PAPER


SCISSORS GAME” has been submitted by me, SANDHIYA M
(953622205037) in the partial fulfillment of the requirement for the award of
the degree of Bachelor of Technology – Information Technology. We further
declare that the contents, statements and other relevant matters are true to the
best of our knowledge.

Place : Rajapalayam. SANDHIYA M

Date : / /2025.

DEPARTMENT OF INFORMATION TECHNOLOGY

RAMCO INSTITUTE OF TECHNOLOGY


RAJAPALAYAM-626 117.

ACKNOWLEDGEMENT

First and foremost, I express my utmost gratitude to our Chairman, Shri.


P.R. Venketrama Raja, B.E., MBA., for his remarkable support and
encouragement toward the improvement of the college.

I extend my sincere thanks to our respected Principal In-charge, Dr. L.


Ganesan, M.E., Ph.D., for the support rendered toward my project work.

I am deeply grateful to our Vice Principal, Dr. S. Rajakarunakaran,


M.E., Ph.D., for his valuable support in the successful completion of my
project.

I am also indebted to Dr. V. Anusuya, M.E., Ph.D., Associate Professor


and Head, Department of Information Technology, for providing the necessary
lab facilities to complete my work.

I convey my heartfelt thanks to my project supervisor, Mrs. M. Rethina


Kumari M.E., MBA., Assistant Professor, Department of Information
Technology, for her continuous guidance and support throughout the project
work.

I am very much thankful to all the staff members of the Department of


Information Technology for the various ways in which they supported me
during the completion of my project.

Last but not least, I extend my sincere thanks to my friends and family
members for their unwavering support and encouragement throughout my
project journey.

ABSTRACT

The Rock Paper Scissors Game is a free and open-source mobile application
designed to offer a fun and engaging way to enjoy the classic hand game in a
digital format. In an era where many casual games are bloated with ads and
hidden data tracking, this app stands out by respecting user privacy and
delivering an ad-free experience.

Built using Flutter and Dart, the game offers a smooth, responsive, and
consistent performance across Android devices. It features intuitive controls and
clean visuals, making it easy for players of all ages to enjoy quick matches
against the computer. The app also supports both single-player (vs
AI) and local multiplayer modes, allowing users to challenge friends in real
time on the same device.

With a focus on simplicity, speed, and user autonomy, the Rock Paper Scissors
Game works fully offline, with no tracking, no data collection, and no cloud
dependency. All interactions stay on-device, ensuring a lightweight and secure
experience. The source code is openly available, encouraging developers and
enthusiasts to contribute, customize, or extend gameplay features.

Whether you're taking a short break, teaching kids simple game mechanics, or
just having fun with friends, this app provides a respectful, ethical, and user-
friendly approach to digital gaming.

TABLE OF CONTENTS
Chapter No. Contents Page No

1 Introduction

1.1 Problem Definition

1.2 Existing System

1.3 Proposed System

1.4 Literature Review

2 System Requirements

2.1 Hardware & Software Requirements

2.2 Software Requirements Specification(SRS)

3 System Design

3.1 Proposed System-Modules of System

3.2 Flow diagram of Proposed system

4 Implementation/Methodology

4.1 Sample Code

5 Experimental Results

5.1 Output Screens

6 Conclusion

References

1. INTRODUCTION
The Rock Paper Scissors Game is a cross-platform mobile application
developed using Flutter, designed to offer users a simple, fun, and engaging
way to play the classic hand game against an AI opponent or a local friend. In
today’s mobile gaming environment, users often face intrusive ads, data
tracking, or online-only requirements. This app eliminates those concerns by
providing a lightweight, privacy-friendly, offline-capable gaming experience.
The game features a clean and responsive interface that’s accessible to users of
all ages. With fast gameplay loops, score tracking, and animated interactions,
the app combines entertainment with ease of use. Built with Flutter, it ensures
seamless performance across both Android and iOS devices.

1.1 PROJECT DESCRIPTION


This Flutter-based project provides a straightforward implementation of the
Rock Paper Scissors game with the following features:
 User-friendly UI to select between Rock, Paper, and Scissors.
 Match against AI or play locally with a friend.
 Real-time score tracking and round history.
 Animated feedback for game results (win/loss/draw).
 Option to reset the game or change modes.
The app adheres to Material Design principles for accessibility and
responsiveness, offering a consistent and smooth experience on various devices.

1.2 EXISTING SYSTEM


Many existing casual games either require internet connectivity, include
advertisements, or track user activity for monetization. While several Rock
Paper Scissors games exist, few are open-source, offline-first, or free from ads.
Others may offer limited features or lack visual polish, reducing their replay
value and user engagement.

1.3 PROPOSED SYSTEM


The proposed Rock Paper Scissors Game aims to fill this gap by offering:
 A fully offline, ad-free experience with no tracking.
 Support for single-player (vs AI) and local multiplayer modes.
 Clean UI with fast, lag-free performance.
 Engaging animations and sound effects for each move.
 Secure local data handling with no internet dependency.
Built with Flutter, the app runs on both Android and iOS platforms using a
single codebase.

1.4 LITERATURE REVIEW


Casual gaming apps have seen massive growth due to their simplicity and
universal appeal. However, user expectations have shifted toward lightweight,
private, and engaging experiences. Existing solutions often lack in one or more
of these areas—especially regarding offline usability and data transparency.
Flutter provides the ideal platform for building such apps, offering powerful UI
rendering, fast development cycles, and platform consistency. The app
leverages packages such as shared_preferences for storing scores locally
and flutter_animated_dialog or custom animations to enhance visual appeal.
This project delivers a modern, ethical alternative to traditional casual games by
focusing on user control, privacy, and enjoyable gameplay.

2. SYSTEM REQUIREMENTS
2.1 HARDWARE & SOFTWARE REQUIREMENTS
Hardware Requirements:
 Processor: Dual-core or higher (recommended: Quad-core for
development)
 RAM: Minimum 4 GB (8 GB or higher for development)
 Storage: At least 500 MB free for app and dependencies
 Graphics: Integrated GPU sufficient; dedicated GPU recommended for
emulator use
Software Requirements:
 OS: Windows, macOS, or Linux (64-bit)
 Flutter SDK: Latest stable version
 IDE: Android Studio or Visual Studio Code
 Mobile Emulator or Physical Device: For Android/iOS testing
 Version Control: Git (with platforms like GitHub or GitLab)

2.2 SOFTWARE REQUIREMENT SPECIFICATION (SRS)


1. Introduction
 Purpose:
To provide users with a fun, distraction-free way to play Rock Paper
Scissors using intuitive controls and fast, offline gameplay.
 Scope:
A mobile app built with Flutter supporting single-player and local
multiplayer modes, local score tracking, animated feedback, and fully
offline functionality.
 IntendedAudience:
General users, students, or casual gamers looking for a simple, ad-free
game.

2. Functional Requirements
 Play single-player vs AI.
 Play multiplayer locally on the same device.
 Choose Rock, Paper, or Scissors with animated UI.
 Display round outcome with visual feedback.
 Track and display scores during gameplay.
 Reset game at any time.

3. Non-Functional Requirements
 Performance: Instant gameplay, quick feedback.
 Usability: Clean UI with Material Design.
 Reliability: Runs smoothly offline; consistent results.
 Security: No data collection or tracking.
 Portability: Runs on both Android and iOS via Flutter.

3. SYSTEM DESIGN
3.1 MODULES OF THE SYSTEM
1. Player Interaction Module
 Handles user input for choosing Rock, Paper, or Scissors.
 Shows choices through icons and animations.
 Provides vibration/sound feedback on selection.

2. Game Logic Module


 Evaluates player vs opponent move.
 Determines the result (win/loss/draw).
 Updates the score accordingly.

3. UI & Animation Module


 Provides visual feedback based on result.
 Displays selections and match outcomes.
 Animates transitions and result screens.

4. Score Management Module


 Maintains and updates player scores.
 Stores game data using shared_preferences.
 Option to reset scores or start a new match.
5. Multiplayer Handling Module
 Enables 2 players to take turns on the same device.
 Separates input flows and resolves conflicts.
 Displays alternating player prompts.
6. Settings/Customization Module (Optional/Future Scope)
 Allows toggling sound/vibration.
 Themes or color mode selection.
 Reset or clear all scores/data.

3.2 FLOW DIAGRAM OF PROPOSED SYSTEM:


Explanation of Flow

1. Launch App: The user opens the Rock Paper Scissors game on their
device.

2. Welcome Screen: Displays the game title with a button to start the
match.

3. Game Screen: The user selects one of the options: Rock, Paper, or
Scissors.

4. Opponent Move: The system randomly selects a move for the


opponent (Rock, Paper, or Scissors).

5. Result Evaluation: The app compares both moves and determines the
result – Win, Lose, or Draw.

6. Display Result: Shows the player's move, opponent's move, and the
result with an option to play again.

7. Logout or Exit: The user can exit or return to the home screen.

4. Implementation / Methodology

IMPLEMENTATION

The Rock Paper Scissors game is implemented as a simple interactive Flutter


application focusing on instant gameplay, clean UI, and responsive
animations. The app allows players to choose their move and see the outcome
immediately.

Flutter, being a cross-platform UI toolkit, was used for development to support


both Android and iOS platforms. The app features smooth animations, state
management for game logic, and interactive feedback for user choices.
Key Features:

 Single-tap selection of Rock, Paper, or Scissors

 Random opponent choice generation

 Result logic for win/loss/draw

 Replay and exit functionality

 Clean, minimalist UI

Development Methodology

The Agile methodology was followed to ensure fast prototyping, testing,


and enhancements. The development phases included:

 RequirementAnalysis:
Defined the core features like move selection, random opponent logic,
result display, and replay. The focus was on simplicity, fun interaction,
and mobile responsiveness.

 SystemDesign:
UI wireframes and game flow diagrams were created using tools like
Whimsical and Figma. The result logic (Rock > Scissors, Scissors >
Paper, Paper > Rock) was mapped in the backend logic.

 Implementation:
Built using Flutter and Dart. The game logic was managed using simple
state management (setState). Interactive UI elements like buttons and
images were integrated for player choices.

 Testing:
Manual testing was done to ensure correct game results, UI
responsiveness, and consistent performance across devices. Edge cases
(e.g., repeated draws) were also checked.
 Deployment:
The APK was generated for Android and tested on real devices.
Emulator testing was performed across screen sizes to validate layout
adaptability.

 Maintenance:
Future plans include adding score tracking, animations for choices, and
possibly a multiplayer version or AI difficulty levels.

4.1 Sample Code:

Pubspec.yaml:

name: RockPaperScissors

description: RockPaperScissors app in Flutter

version: 1.0.0+1

environment:

sdk: '>=3.5.0 <4.0.0'

dependencies:

flutter:

sdk: flutter

cupertino_icons: ^1.0.2

flutter:

uses-material-design: true

main.dart:

import 'dart:math';
import 'package:flutter/material.dart';
void main() {
runApp(RockPaperScissorsApp());
}
class RockPaperScissorsApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Rock Paper Scissors',
theme: ThemeData(
primarySwatch: Colors.deepPurple,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: RockPaperScissorsGame(),
);
}
}
class RockPaperScissorsGame extends StatefulWidget {
@override
_RockPaperScissorsGameState createState() =>
_RockPaperScissorsGameState();
}
class _RockPaperScissorsGameState extends State<RockPaperScissorsGame>
with SingleTickerProviderStateMixin {
final List<String> options = ['Rock', 'Paper', 'Scissors'];
String? userChoice;
String? aiChoice;
String result = '';
int userScore = 0;
int aiScore = 0;
bool showChoices = false;
late AnimationController _controller;
late Animation<double> _animation;
@override
void initState() {
super.initState();
_controller =
AnimationController(vsync: this, duration: Duration(milliseconds: 500));
_animation = CurvedAnimation(parent: _controller, curve: Curves.easeIn);
}
void playGame(String choice) {
final random = Random();
final ai = options[random.nextInt(options.length)];
setState(() {
userChoice = choice;
aiChoice = ai;
showChoices = true;
_controller.forward(from: 0);
result = determineWinner(choice, ai);
if (result == 'You Win!') {
userScore++;
} else if (result == 'AI Wins!') {
aiScore++;
}
});
}
String determineWinner(String user, String ai) {
if (user == ai) return 'It\'s a Draw!';
if ((user == 'Rock' && ai == 'Scissors') ||
(user == 'Paper' && ai == 'Rock') ||
(user == 'Scissors' && ai == 'Paper')) {
return 'You Win!';
}
return 'AI Wins!';
}
Widget buildGesture(String label, IconData icon, VoidCallback onTap) {
return GestureDetector(
onTap: () => playGame(label),
child: Column(
children: [
CircleAvatar(
radius: 30,
child: Icon(icon, size: 30),
backgroundColor: Colors.deepPurpleAccent,
),
SizedBox(height: 8),
Text(label),
],
),
);
}
Widget buildAnimatedChoice(String label) {
return FadeTransition(
opacity: _animation,
child: Column(
children: [
Icon(
label == 'Rock'
? Icons.circle
: label == 'Paper'
? Icons.note
: Icons.content_cut,
size: 50,
),
Text(label, style: TextStyle(fontSize: 16)),
],
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Rock Paper Scissors'),
centerTitle: true,
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
Text('Choose Your Move',
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
buildGesture('Rock', Icons.circle, () => playGame('Rock')),
buildGesture('Paper', Icons.note, () => playGame('Paper')),
buildGesture(
'Scissors', Icons.content_cut, () => playGame('Scissors')),
],
),
SizedBox(height: 40),
if (showChoices) ...[
Text('You Chose:', style: TextStyle(fontWeight: FontWeight.bold)),
buildAnimatedChoice(userChoice ?? ''),
SizedBox(height: 20),
Text('AI Chose:', style: TextStyle(fontWeight: FontWeight.bold)),
buildAnimatedChoice(aiChoice ?? ''),
SizedBox(height: 20),
Text(result,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold)),
SizedBox(height: 20),
],
Divider(),
Text('Scoreboard',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
SizedBox(height: 10),
Text('You: $userScore | AI: $aiScore',
style: TextStyle(fontSize: 18)),
],
),
),
);
}
}

5.Experimental Results

The system was tested under various conditions to evaluate its performance,
functionality, and usability.

5.1 Output Screen:


6. CONCLUSION:
The Rock Paper Scissors Game has been designed as a simple yet engaging
application that offers instant entertainment with a classic game concept. Built
using Flutter, it ensures smooth performance and a visually appealing user
interface on both Android and iOS devices. The game enables players to easily
select their move, view the randomly generated opponent move, and
immediately see the result—win, lose, or draw—making for a fast-paced and
enjoyable experience.
The application logic is clean and efficient, with minimal resource usage and
responsive interaction. Although simple in design, it serves as a strong
foundation for future enhancements such as score tracking, AI-based opponents,
multiplayer mode, and themed UI customizations. The use of Dart as the
programming language and Flutter’s widget system allows for easy
maintenance and scalability.
Overall, the game reflects the core principles of interactive design—clarity,
feedback, and fun—making it a lightweight yet powerful demonstration of
mobile app development using Flutter.

References
 Flutter Documentation – https://docs.flutter.dev
 Dart Language Guide – https://dart.dev/guides
 Random Number Generator
– https://api.flutter.dev/flutter/dart-math/Random-class.html
 Flutter UI Widgets – https://docs.flutter.dev/ui/widgets
 Material Design Guidelines – https://m3.material.io/
 Flutter Testing – https://docs.flutter.dev/testing
 Android Developers – App UI and Interactivity
 Apple Developer Documentation – UI Design and Interactions

You might also like