SlideShare a Scribd company logo
1 of 43
Download to read offline
ACM init() 
Day 5: November 20, 2014
From last time 
• More about arrays 
• Method 
• Parameters 
• Return Values 
• Blocks 
• How to use a block 
• Parameters
Area Methods HW 
I wanted you to make a program that uses methods to 
calculate the area of various shapes. It was to be called like 
this:
First step 
We called a method called "area", using the shape name and 
two side lengths as arguments.
Second step 
The area method then called a method that calculates and 
prints the area of each shape.
A new data type 
We know that an array is a list of variables. However, arrays are 
indexed using numbers. There is another data type that can 
change this: a hash 
A Hash is a dictionary-like collection of unique keys and their 
values. While an array uses integers as its index, a Hash 
allows you to use any object type.
Hash example
Hash example continued 
What will this print? 
Make your own hash!
Hash syntax 
In general, a hash looks like this: 
A hash consists of key-value pairs. Each key maps to a value.
Creating a hash 
There is more than one way to make a hash. We already saw 
the first way: typing out key and value pairs in brackets. 
How would we make an empty hash? 
my_hash = Hash.new 
This will create a completely empty hash. Make sure to 
capitalize Hash!
Adding to a hash 
Say we create an empty hash called pets. Now we want to add 
our pets to it!
Accessing a hash 
We can access elements of a hash just like elements of an 
array.
Your turn! 
Create a hash called about_me. In the hash, put your name, 
your age, and your favorite color.
Answer 
There are two ways to do this:
Iterating over hashes 
Last week we went over how to iterate over arrays: 
We can iterate over hashes in a very similar way.
Iterating over hashes 
Iterating over a hash is very similar to iterating over an array, 
but we have to print out two different things: the key and the 
value.
Prints out...
Any questions on 
hashes?
Now we get to do the cool 
stuff... Object Oriented 
Programming.
Object-Oriented 
Programming 
So far in Ruby we've seen a lot of variables and data types. 
Numbers, strings, booleans, arrays, hashes, etc. 
We can do even more!
Object-Oriented 
Programming 
In Ruby, almost everything is an object. 
! 
What is an object? Objects have methods, which you've seen 
before, and attributes, which are just data. 
! 
We've even used them before without even knowing it! Take a 
look.
Strings as objects 
We have set strings to certain values before: 
name = "Kelly" 
! 
We can also use methods with strings: 
name.length 
! 
In this case "name" is a string object with a .length method and 
a length attribute of 5. 
! 
"name" is now part of something called the string Class.
What is a class? 
A class is just a way of organizing and producing objects with 
similar attributes and methods.
What is a class? 
We're going to build our own class. Let's think of a student. 
Some things a student has: 
name 
ID 
major 
! 
Let's define a class called Student!
Defining a class 
First, we need to make a class for our student. Here's how to 
start: 
Now we have an empty class!
Initializing a class 
Every class needs a method called initialize. When the class is 
created, the initialze method will automatically be called. 
! 
Create an empty initialize method in the Student class:
Initializing a class 
We wanted our student to have a name, an ID, and a major. 
Let's do that!
Initialzing a class 
In Ruby, we use @ before a variable to signify that it's an 
instance variable. This means that the variable is attached to 
the instance of the class. 
! 
Any variable defined withing the initialize function must have 
an @ in front of it. This variable is now a member variable of 
the class.
Creating objects 
Our class is defined enough to create an object now! Let's 
create a new student: 
I just created a new Student object with name set to "Kelly", 
idNum set to "123456789", and major set to "CS".
Creating objects 
We can create a bunch of Student objects! Each one will have 
its own name, ID, and major.
Let's make our Students do 
things 
What does a student do? Let's add some methods to our 
Student class. A student can: 
Say hi 
Take a test 
Freak out
Adding methods to classes 
We added a method called sayHi! Now how do we use it?
Using classes 
To call a method that is part of a class, just type in the name of 
the class variable, then a period, then the method name: 
variable_name.method_name
Using classes 
I had a Student class called "me" and a student class called 
"other". Calling the "sayHi" method on both of them will print 
out: 
! 
Kelly says hi! 
Bob says hi!
Let's add more methods!
Let's add more methods!
Using the new methods 
These new methods can be called the same way as the first 
one! What will the following print out?
Answer
Let's create our own 
class together!
Any questions on 
classes (so far)?
What we did today 
• Hashes 
• Creating hashes 
• Putting information in hashes 
• Iterating over hashes 
• Classes 
• Creating classes 
• Putting variables and methods in classes 
• Using methods in classes
Homework 
On the next page is a very simple game that uses a class called 
Player. I wrote the code to play the game for you, but you have 
to write the class. You can write the methods in the class 
however you want, but all the methods that are in the loop I 
wrote for you have to be present. 
! 
The idea of the game is that two players take turns either 
attacking or healing. On each turn they can choose to attack the 
other player or heal themselves. You should define a variable 
called health in your Player class to keep track of this. If you 
want you can make the game more interesting and add in 
different types of attacks that have different effects on health.
ACM init() Day 5: November 20, 2014 hashes classes Ruby

More Related Content

Similar to ACM init() Day 5: November 20, 2014 hashes classes Ruby

Similar to ACM init() Day 5: November 20, 2014 hashes classes Ruby (20)

python note.pdf
python note.pdfpython note.pdf
python note.pdf
 
Oz_Chap 2_M3_Lesson Slides_Variables.pptx
Oz_Chap 2_M3_Lesson Slides_Variables.pptxOz_Chap 2_M3_Lesson Slides_Variables.pptx
Oz_Chap 2_M3_Lesson Slides_Variables.pptx
 
Init() Day 4
Init() Day 4Init() Day 4
Init() Day 4
 
Ruby objects
Ruby objectsRuby objects
Ruby objects
 
Ruby object model
Ruby object modelRuby object model
Ruby object model
 
Presentation 3rd
Presentation 3rdPresentation 3rd
Presentation 3rd
 
classes and objects.pdf
classes and objects.pdfclasses and objects.pdf
classes and objects.pdf
 
Chap 3 Python Object Oriented Programming - Copy.ppt
Chap 3 Python Object Oriented Programming - Copy.pptChap 3 Python Object Oriented Programming - Copy.ppt
Chap 3 Python Object Oriented Programming - Copy.ppt
 
Oops in PHP
Oops in PHPOops in PHP
Oops in PHP
 
06 InheritanceAndPolymorphism.ppt
06 InheritanceAndPolymorphism.ppt06 InheritanceAndPolymorphism.ppt
06 InheritanceAndPolymorphism.ppt
 
6 Object Oriented Programming
6 Object Oriented Programming6 Object Oriented Programming
6 Object Oriented Programming
 
Introduction to Python - Part Three
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Three
 
Mongo and Harmony
Mongo and HarmonyMongo and Harmony
Mongo and Harmony
 
Ruby object model - Understanding of object play role for ruby
Ruby object model - Understanding of object play role for rubyRuby object model - Understanding of object play role for ruby
Ruby object model - Understanding of object play role for ruby
 
Ruby Interview Questions
Ruby Interview QuestionsRuby Interview Questions
Ruby Interview Questions
 
Object concepts
Object conceptsObject concepts
Object concepts
 
13 inheritance
13   inheritance13   inheritance
13 inheritance
 
201707 CSE110 Lecture 19
201707 CSE110 Lecture 19   201707 CSE110 Lecture 19
201707 CSE110 Lecture 19
 
Object concepts
Object conceptsObject concepts
Object concepts
 
CSCI 200 Java Chapter 03 Using Classes
CSCI 200 Java Chapter 03 Using ClassesCSCI 200 Java Chapter 03 Using Classes
CSCI 200 Java Chapter 03 Using Classes
 

More from UCLA Association of Computing Machinery (8)

ACM init() Day 3
ACM init() Day 3ACM init() Day 3
ACM init() Day 3
 
ACM init() Day 2
ACM init() Day 2ACM init() Day 2
ACM init() Day 2
 
ACM init() Spring 2015 Day 1
ACM init() Spring 2015 Day 1ACM init() Spring 2015 Day 1
ACM init() Spring 2015 Day 1
 
Intro to Hackathons (Winter 2015)
Intro to Hackathons (Winter 2015)Intro to Hackathons (Winter 2015)
Intro to Hackathons (Winter 2015)
 
An Introduction to Sensible Typography
An Introduction to Sensible TypographyAn Introduction to Sensible Typography
An Introduction to Sensible Typography
 
Building a Reddit Clone from the Ground Up
Building a Reddit Clone from the Ground UpBuilding a Reddit Clone from the Ground Up
Building a Reddit Clone from the Ground Up
 
ACM Init() lesson 1
ACM Init() lesson 1ACM Init() lesson 1
ACM Init() lesson 1
 
ACM Fall General Meeting
ACM Fall General Meeting ACM Fall General Meeting
ACM Fall General Meeting
 

Recently uploaded

ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Seán Kennedy
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxMaryGraceBautista27
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatYousafMalik24
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinojohnmickonozaleda
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptxSherlyMaeNeri
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 

Recently uploaded (20)

ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 
Science 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptxScience 7 Quarter 4 Module 2: Natural Resources.pptx
Science 7 Quarter 4 Module 2: Natural Resources.pptx
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
Earth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice greatEarth Day Presentation wow hello nice great
Earth Day Presentation wow hello nice great
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipino
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptx
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 

ACM init() Day 5: November 20, 2014 hashes classes Ruby

  • 1. ACM init() Day 5: November 20, 2014
  • 2. From last time • More about arrays • Method • Parameters • Return Values • Blocks • How to use a block • Parameters
  • 3. Area Methods HW I wanted you to make a program that uses methods to calculate the area of various shapes. It was to be called like this:
  • 4. First step We called a method called "area", using the shape name and two side lengths as arguments.
  • 5. Second step The area method then called a method that calculates and prints the area of each shape.
  • 6. A new data type We know that an array is a list of variables. However, arrays are indexed using numbers. There is another data type that can change this: a hash A Hash is a dictionary-like collection of unique keys and their values. While an array uses integers as its index, a Hash allows you to use any object type.
  • 8. Hash example continued What will this print? Make your own hash!
  • 9. Hash syntax In general, a hash looks like this: A hash consists of key-value pairs. Each key maps to a value.
  • 10. Creating a hash There is more than one way to make a hash. We already saw the first way: typing out key and value pairs in brackets. How would we make an empty hash? my_hash = Hash.new This will create a completely empty hash. Make sure to capitalize Hash!
  • 11. Adding to a hash Say we create an empty hash called pets. Now we want to add our pets to it!
  • 12. Accessing a hash We can access elements of a hash just like elements of an array.
  • 13. Your turn! Create a hash called about_me. In the hash, put your name, your age, and your favorite color.
  • 14. Answer There are two ways to do this:
  • 15. Iterating over hashes Last week we went over how to iterate over arrays: We can iterate over hashes in a very similar way.
  • 16. Iterating over hashes Iterating over a hash is very similar to iterating over an array, but we have to print out two different things: the key and the value.
  • 18. Any questions on hashes?
  • 19. Now we get to do the cool stuff... Object Oriented Programming.
  • 20. Object-Oriented Programming So far in Ruby we've seen a lot of variables and data types. Numbers, strings, booleans, arrays, hashes, etc. We can do even more!
  • 21. Object-Oriented Programming In Ruby, almost everything is an object. ! What is an object? Objects have methods, which you've seen before, and attributes, which are just data. ! We've even used them before without even knowing it! Take a look.
  • 22. Strings as objects We have set strings to certain values before: name = "Kelly" ! We can also use methods with strings: name.length ! In this case "name" is a string object with a .length method and a length attribute of 5. ! "name" is now part of something called the string Class.
  • 23. What is a class? A class is just a way of organizing and producing objects with similar attributes and methods.
  • 24. What is a class? We're going to build our own class. Let's think of a student. Some things a student has: name ID major ! Let's define a class called Student!
  • 25. Defining a class First, we need to make a class for our student. Here's how to start: Now we have an empty class!
  • 26. Initializing a class Every class needs a method called initialize. When the class is created, the initialze method will automatically be called. ! Create an empty initialize method in the Student class:
  • 27. Initializing a class We wanted our student to have a name, an ID, and a major. Let's do that!
  • 28. Initialzing a class In Ruby, we use @ before a variable to signify that it's an instance variable. This means that the variable is attached to the instance of the class. ! Any variable defined withing the initialize function must have an @ in front of it. This variable is now a member variable of the class.
  • 29. Creating objects Our class is defined enough to create an object now! Let's create a new student: I just created a new Student object with name set to "Kelly", idNum set to "123456789", and major set to "CS".
  • 30. Creating objects We can create a bunch of Student objects! Each one will have its own name, ID, and major.
  • 31. Let's make our Students do things What does a student do? Let's add some methods to our Student class. A student can: Say hi Take a test Freak out
  • 32. Adding methods to classes We added a method called sayHi! Now how do we use it?
  • 33. Using classes To call a method that is part of a class, just type in the name of the class variable, then a period, then the method name: variable_name.method_name
  • 34. Using classes I had a Student class called "me" and a student class called "other". Calling the "sayHi" method on both of them will print out: ! Kelly says hi! Bob says hi!
  • 35. Let's add more methods!
  • 36. Let's add more methods!
  • 37. Using the new methods These new methods can be called the same way as the first one! What will the following print out?
  • 39. Let's create our own class together!
  • 40. Any questions on classes (so far)?
  • 41. What we did today • Hashes • Creating hashes • Putting information in hashes • Iterating over hashes • Classes • Creating classes • Putting variables and methods in classes • Using methods in classes
  • 42. Homework On the next page is a very simple game that uses a class called Player. I wrote the code to play the game for you, but you have to write the class. You can write the methods in the class however you want, but all the methods that are in the loop I wrote for you have to be present. ! The idea of the game is that two players take turns either attacking or healing. On each turn they can choose to attack the other player or heal themselves. You should define a variable called health in your Player class to keep track of this. If you want you can make the game more interesting and add in different types of attacks that have different effects on health.