1
+ {
2
+ "metadata" : {
3
+ "name" : " " ,
4
+ "signature" : " sha256:e39489d82b073fbdc6f7005b77f4822a973affa30340544bad8ad1423187d25e"
5
+ },
6
+ "nbformat" : 3 ,
7
+ "nbformat_minor" : 0 ,
8
+ "worksheets" : [
9
+ {
10
+ "cells" : [
11
+ {
12
+ "cell_type" : " markdown" ,
13
+ "metadata" : {},
14
+ "source" : [
15
+ " #Battleship\n " ,
16
+ " ###You can learn a lot when you are having fun - [Gerard Gorman](http://www.imperial.ac.uk/people/g.gorman)"
17
+ ]
18
+ },
19
+ {
20
+ "cell_type" : " code" ,
21
+ "collapsed" : false ,
22
+ "input" : [
23
+ " import random\n " ,
24
+ " \n " ,
25
+ " def create_board(size):\n " ,
26
+ " ''''Initialise the board using a Python list.'''\n " ,
27
+ " board = []\n " ,
28
+ " for x in range(0, size):\n " ,
29
+ " board.append([\" O\" ] * size)\n " ,
30
+ " return board\n " ,
31
+ " \n " ,
32
+ " def print_board(board):\n " ,
33
+ " '''Print out the current board.'''\n " ,
34
+ " for row in board:\n " ,
35
+ " print \" \" .join(row)\n " ,
36
+ " return\n " ,
37
+ " \n " ,
38
+ " def generate_ship(max_ship_size, board_size):\n " ,
39
+ " # We are going to define a ship as a list of board coordinates.\n " ,
40
+ " ship = []\n " ,
41
+ " \n " ,
42
+ " # Randomly select define the size of the ship.\n " ,
43
+ " ship_size = random.randint(1, max_ship_size)\n " ,
44
+ " \n " ,
45
+ " # Randomly define the orientation.\n " ,
46
+ " orientation = random.randint(0, 1)\n " ,
47
+ " \n " ,
48
+ " # Randomly select the seed point for the ship.\n " ,
49
+ " iseed = random.randint(0, board_size)\n " ,
50
+ " jseed = random.randint(0, board_size)\n " ,
51
+ " \n " ,
52
+ " # Generate ship - here I'm not going to worry if it goes off the edge.\n " ,
53
+ " if orientation==0:\n " ,
54
+ " for i in range(ship_size):\n " ,
55
+ " ship.append((iseed+i, jseed))\n " ,
56
+ " else:\n " ,
57
+ " for j in range(ship_size):\n " ,
58
+ " ship.append((iseed, jseed+j))\n " ,
59
+ " \n " ,
60
+ " return ship\n " ,
61
+ " \n " ,
62
+ " # Set the size of the board and initialise the board.\n " ,
63
+ " board_size = 10\n " ,
64
+ " board = create_board(board_size)\n " ,
65
+ " print_board(board)\n " ,
66
+ " \n " ,
67
+ " # Add the ship\n " ,
68
+ " ship = generate_ship(6, board_size)\n " ,
69
+ " \n " ,
70
+ " print \" Let's play Battleship!\"\n " ,
71
+ " \n " ,
72
+ " for turn in range(4):\n " ,
73
+ " try:\n " ,
74
+ " row = int(raw_input(\" Guess row:\" ))\n " ,
75
+ " if row<0 or row>board_size-1:\n " ,
76
+ " raise ValueError\n " ,
77
+ " except:\n " ,
78
+ " print \" Value must be an integer between 0 and %d. Try again.\" %(board_size)\n " ,
79
+ " continue\n " ,
80
+ " \n " ,
81
+ " try:\n " ,
82
+ " column = int(raw_input(\" Guess column:\" ))\n " ,
83
+ " if column<0 or column>board_size-1:\n " ,
84
+ " raise ValueError\n " ,
85
+ " except:\n " ,
86
+ " print \" Value must be an integer between 0 and %d. Try again.\" %(board_size)\n " ,
87
+ " continue\n " ,
88
+ " \n " ,
89
+ " if (row, column) in ship:\n " ,
90
+ " print \" Congratulations! You sunk my battleship!\"\n " ,
91
+ " break\n " ,
92
+ " else:\n " ,
93
+ " if turn == 3:\n " ,
94
+ " board[row][column] = \" X\"\n " ,
95
+ " print_board(board)\n " ,
96
+ " print \" Game Over\"\n " ,
97
+ " else:\n " ,
98
+ " board[row][column] = \" X\"\n " ,
99
+ " print_board(board)"
100
+ ],
101
+ "language" : " python" ,
102
+ "metadata" : {},
103
+ "outputs" : [
104
+ {
105
+ "output_type" : " stream" ,
106
+ "stream" : " stdout" ,
107
+ "text" : [
108
+ " O O O O O O O O O O\n " ,
109
+ " O O O O O O O O O O\n " ,
110
+ " O O O O O O O O O O\n " ,
111
+ " O O O O O O O O O O\n " ,
112
+ " O O O O O O O O O O\n " ,
113
+ " O O O O O O O O O O\n " ,
114
+ " O O O O O O O O O O\n " ,
115
+ " O O O O O O O O O O\n " ,
116
+ " O O O O O O O O O O\n " ,
117
+ " O O O O O O O O O O\n " ,
118
+ " Let's play Battleship!\n "
119
+ ]
120
+ },
121
+ {
122
+ "name" : " stdout" ,
123
+ "output_type" : " stream" ,
124
+ "stream" : " stdout" ,
125
+ "text" : [
126
+ " Guess row:1\n "
127
+ ]
128
+ },
129
+ {
130
+ "name" : " stdout" ,
131
+ "output_type" : " stream" ,
132
+ "stream" : " stdout" ,
133
+ "text" : [
134
+ " Guess column:1\n "
135
+ ]
136
+ },
137
+ {
138
+ "output_type" : " stream" ,
139
+ "stream" : " stdout" ,
140
+ "text" : [
141
+ " O O O O O O O O O O\n " ,
142
+ " O X O O O O O O O O\n " ,
143
+ " O O O O O O O O O O\n " ,
144
+ " O O O O O O O O O O\n " ,
145
+ " O O O O O O O O O O\n " ,
146
+ " O O O O O O O O O O\n " ,
147
+ " O O O O O O O O O O\n " ,
148
+ " O O O O O O O O O O\n " ,
149
+ " O O O O O O O O O O\n " ,
150
+ " O O O O O O O O O O\n "
151
+ ]
152
+ },
153
+ {
154
+ "name" : " stdout" ,
155
+ "output_type" : " stream" ,
156
+ "stream" : " stdout" ,
157
+ "text" : [
158
+ " Guess row:2\n "
159
+ ]
160
+ },
161
+ {
162
+ "name" : " stdout" ,
163
+ "output_type" : " stream" ,
164
+ "stream" : " stdout" ,
165
+ "text" : [
166
+ " Guess column:2\n "
167
+ ]
168
+ },
169
+ {
170
+ "output_type" : " stream" ,
171
+ "stream" : " stdout" ,
172
+ "text" : [
173
+ " O O O O O O O O O O\n " ,
174
+ " O X O O O O O O O O\n " ,
175
+ " O O X O O O O O O O\n " ,
176
+ " O O O O O O O O O O\n " ,
177
+ " O O O O O O O O O O\n " ,
178
+ " O O O O O O O O O O\n " ,
179
+ " O O O O O O O O O O\n " ,
180
+ " O O O O O O O O O O\n " ,
181
+ " O O O O O O O O O O\n " ,
182
+ " O O O O O O O O O O\n "
183
+ ]
184
+ },
185
+ {
186
+ "name" : " stdout" ,
187
+ "output_type" : " stream" ,
188
+ "stream" : " stdout" ,
189
+ "text" : [
190
+ " Guess row:3\n "
191
+ ]
192
+ },
193
+ {
194
+ "name" : " stdout" ,
195
+ "output_type" : " stream" ,
196
+ "stream" : " stdout" ,
197
+ "text" : [
198
+ " Guess column:3\n "
199
+ ]
200
+ },
201
+ {
202
+ "output_type" : " stream" ,
203
+ "stream" : " stdout" ,
204
+ "text" : [
205
+ " O O O O O O O O O O\n " ,
206
+ " O X O O O O O O O O\n " ,
207
+ " O O X O O O O O O O\n " ,
208
+ " O O O X O O O O O O\n " ,
209
+ " O O O O O O O O O O\n " ,
210
+ " O O O O O O O O O O\n " ,
211
+ " O O O O O O O O O O\n " ,
212
+ " O O O O O O O O O O\n " ,
213
+ " O O O O O O O O O O\n " ,
214
+ " O O O O O O O O O O\n "
215
+ ]
216
+ },
217
+ {
218
+ "name" : " stdout" ,
219
+ "output_type" : " stream" ,
220
+ "stream" : " stdout" ,
221
+ "text" : [
222
+ " Guess row:4\n "
223
+ ]
224
+ },
225
+ {
226
+ "name" : " stdout" ,
227
+ "output_type" : " stream" ,
228
+ "stream" : " stdout" ,
229
+ "text" : [
230
+ " Guess column:4\n "
231
+ ]
232
+ },
233
+ {
234
+ "output_type" : " stream" ,
235
+ "stream" : " stdout" ,
236
+ "text" : [
237
+ " O O O O O O O O O O\n " ,
238
+ " O X O O O O O O O O\n " ,
239
+ " O O X O O O O O O O\n " ,
240
+ " O O O X O O O O O O\n " ,
241
+ " O O O O X O O O O O\n " ,
242
+ " O O O O O O O O O O\n " ,
243
+ " O O O O O O O O O O\n " ,
244
+ " O O O O O O O O O O\n " ,
245
+ " O O O O O O O O O O\n " ,
246
+ " O O O O O O O O O O\n " ,
247
+ " Game Over\n "
248
+ ]
249
+ }
250
+ ],
251
+ "prompt_number" : 1
252
+ },
253
+ {
254
+ "cell_type" : " code" ,
255
+ "collapsed" : false ,
256
+ "input" : [],
257
+ "language" : " python" ,
258
+ "metadata" : {},
259
+ "outputs" : []
260
+ }
261
+ ],
262
+ "metadata" : {}
263
+ }
264
+ ]
265
+ }
0 commit comments