100% found this document useful (1 vote)
45 views

Beginning Java Game Programming 2nd Edition Jonathan S. Harbourpdf download

The document promotes the download of various ebooks and textbooks related to game programming, including 'Beginning Java Game Programming 2nd Edition' by Jonathan S. Harbour. It provides links to download these resources from ebookultra.com and includes details about the author's background and acknowledgments. The document also outlines the contents of the book, including chapters on Java for beginners and programming essentials.

Uploaded by

yuvancziling9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
45 views

Beginning Java Game Programming 2nd Edition Jonathan S. Harbourpdf download

The document promotes the download of various ebooks and textbooks related to game programming, including 'Beginning Java Game Programming 2nd Edition' by Jonathan S. Harbour. It provides links to download these resources from ebookultra.com and includes details about the author's background and acknowledgments. The document also outlines the contents of the book, including chapters on Java for beginners and programming essentials.

Uploaded by

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

Download the full version and explore a variety of ebooks

or textbooks at https://ebookultra.com

Beginning Java Game Programming 2nd Edition


Jonathan S. Harbour

_____ Follow the link below to get your download now _____

https://ebookultra.com/download/beginning-java-game-
programming-2nd-edition-jonathan-s-harbour/

Access ebookultra.com now to download high-quality


ebooks or textbooks
Here are some recommended products for you. Click the link to
download, or explore more at ebookultra.com

Multi Threaded Game Engine Design 1st Edition Jonathan


S.(Jonathan S. Harbour) Harbour

https://ebookultra.com/download/multi-threaded-game-engine-design-1st-
edition-jonathan-s-jonathan-s-harbour-harbour/

Beginning C Game Programming 2nd ed. Edition John Horton

https://ebookultra.com/download/beginning-c-game-programming-2nd-ed-
edition-john-horton/

XNA Game Studio 4 0 for Xbox 360 Developers 1st Edition


Jonathan S. Harbour

https://ebookultra.com/download/xna-game-studio-4-0-for-
xbox-360-developers-1st-edition-jonathan-s-harbour/

Advanced Java Game Programming Wallace Croft

https://ebookultra.com/download/advanced-java-game-programming-
wallace-croft/
Beginning Direct3D Game Programming Prima Tech s Game
Development 1st Edition Wolfgang Engel

https://ebookultra.com/download/beginning-direct3d-game-programming-
prima-tech-s-game-development-1st-edition-wolfgang-engel/

Killer Game Programming in Java 1st Edition Andrew Davison

https://ebookultra.com/download/killer-game-programming-in-java-1st-
edition-andrew-davison/

Beginning Programming with Java For Dummies 4th Edition


Barry Burd

https://ebookultra.com/download/beginning-programming-with-java-for-
dummies-4th-edition-barry-burd/

Beginning Programming with Java for Dummies 5th Edition


Barry Burd

https://ebookultra.com/download/beginning-programming-with-java-for-
dummies-5th-edition-barry-burd/

Beginning OpenGL Game Programming Second Edition Luke


(Luke Benstead) Benstead

https://ebookultra.com/download/beginning-opengl-game-programming-
second-edition-luke-luke-benstead-benstead/
Beginning Java Game Programming 2nd Edition
Jonathan S. Harbour Digital Instant Download
Author(s): Jonathan S. Harbour
ISBN(s): 9781598636499, 1598636499
Edition: 2
File Details: PDF, 3.26 MB
Year: 2007
Language: english
Beginning
JavaTM Game
Programming
Second Edition

Jonathan S. Harbour
ß 2008 Thomson Course Technology, a division of Thomson Learning Publisher and General Manager,
Inc. All rights reserved. No part of this book may be reproduced or Thomson Course Technology PTR:
transmitted in any form or by any means, electronic or mechanical, Stacy L. Hiquet
including photocopying, recording, or by any information storage or
retrieval system without written permission from Thomson Course Associate Director of Marketing:
Technology PTR, except for the inclusion of brief quotations in a review. Sarah O’Donnell

The Thomson Course Technology PTR logo and related trade dress are Manager of Editorial Services:
trademarks of Thomson Course Technology, a division of Thomson Heather Talbot
Learning Inc., and may not be used without written permission.
Marketing Manager:
Java is a trademark of Sun Microsystems, Inc. in the United States and
Jordan Casey
other countries. All other trademarks are the property of their
respective owners. Senior Acquisitions Editor:
Important: Thomson Course Technology PTR cannot provide software Emi Smith
support. Please contact the appropriate software manufacturer’s
technical support line or Web site for assistance. Project Editor/Copy Editor:
Cathleen D. Small
Thomson Course Technology PTR and the author have attempted
throughout this book to distinguish proprietary trademarks from Technical Reviewer:
descriptive terms by following the capitalization style used by the Dustin Clingman
manufacturer.
PTR Editorial Services Coordinator:
Information contained in this book has been obtained by Thomson Erin Johnson
Course Technology PTR from sources believed to be reliable. However,
because of the possibility of human or mechanical error by our sources, Interior Layout Tech:
Thomson Course Technology PTR, or others, the Publisher does not ICC Macmillan Inc.
guarantee the accuracy, adequacy, or completeness of any information
and is not responsible for any errors or omissions or the results Cover Designer:
obtained from use of such information. Readers should be particularly Mike Tanamachi
aware of the fact that the Internet is an ever-changing entity. Some facts
may have changed since this book went to press. CD-ROM Producer:
Brandon Penticuff
Educational facilities, companies, and organizations interested in
multiple copies or licensing of this book should contact the Publisher Indexer:
for quantity discount information. Training manuals, CD-ROMs, and Katherine Stimson
portions of this book are also available individually or can be tailored
for specific needs. Proofreader:
Kate Shoup
ISBN-10: 1-59863-476-3
ISBN-13: 978-1-59863-476-1
eISBN-10: 1-59863-649-9
Library of Congress Catalog Card Number: 2007938236
Printed in the United States of America
08 09 10 11 12 TW 10 9 8 7 6 5 4 3 2 1

Thomson Course Technology PTR,


a division of Thomson Learning Inc.
25 Thomson Place
Boston, MA 02210
http://www.courseptr.com
For Kaitlyn Faye
Acknowledgments

I thank God for the many opportunities that have come my way this year, such as
the chance to write this book, and for the apparent talent needed to make
something tangible of these opportunities. I am grateful to my family for their
ongoing encouragement: Jennifer, Jeremiah, Kayleigh, Kaitlyn, Kourtney, Mom
and Dad, Grandma Cremeen, Dave and Barbara, my extended family at Vision
Baptist Church, and Pastor Michael Perham and his family–Jennifer, Ashley,
Bryce, and Sage–who have been such a blessing this past year.
Thank you to the students, faculty, and staff at UAT for contributing to such a
wonderfully creative environment for learning. I would like to thank the Alpha
Squad team, who had some influence on this book (and even helped to solve a few
coding problems with Galactic War): Roy Evans, Stewart Johnston, Peter Pascoal,
Travis Eddlemon, Daniel Muller, Daniel Stirk, Patrick Cissarz, David Coddington,
Marc Kirschner, Jeffrey Woodard, Jonathan Allmen, Levi Bath, Douglas Cannon,
Joshua Gertz, Justin Hair, Adam Knight, Eric Lacerna, Daryl Lynch, and Kevin
McCusker; and the faculty sponsors: Rebecca Whitehead, Michael Eilers, and
Arnaud Ehgner. I also owe my thanks to students Mark Walker and Andrew
Hawken for introducing me to the angular velocity code used in Galactic War.
I am also very thankful for the artwork featured in this book, provided by Ari Feldman
(www.flyingyogi.com) and Reiner Prokein (www.reinerstileset.de). Without their
wonderful graphics, Galactic War would have featured programmer art (cringe!).
I offer my sincere thanks to the editors at Course Technology PTR and the
freelance editors who put this book together: Emi Smith, Cathleen Small, Dustin
Clingman, and Kate Shoup.
About the Author

Jonathan S. Harbour is an Associate Professor of Game Development at the


University of Advancing Technology in Tempe, Arizona. His current game
project, Starflight: The Lost Colony (www.starflightgame.com), will be released in
late 2007. He lives in Arizona with his wife, Jennifer, and four children: Jeremiah,
Kayleigh, Kaitlyn, and Kourtney. He can be reached at www.jharbour.com.
Contents

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii

PART I JAVA FOR BEGINNERS . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Chapter 1 Getting Started with Java . . . . . . . . . . . . . . . . . . . . . . . . 3


Java and the Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Studying the Market . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Design Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
The Casual Games Market . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
No Manual Required . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Casual Gamers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Casual Games. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Installing and Configuring Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Installing Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Configuring Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Java Version Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Your First Java Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Java Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Java Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

vi
Contents vii

Chapter 2 Java Programming Essentials . . . . . . . . . . . . . . . . . . . . . 23


Java Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Web Server Technology Explained . . . . . . . . . . . . . . . . . . . . . . 24
Hosting Java Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Compiling Java Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
The Java Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Java Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
The Essence of Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
The main Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Object-Oriented Programming . . . . . . . . . . . . . . . . . . . . . . . . . 40
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Chapter 3 Creating Your First Java Game . . . . . . . . . . . . . . . . . . . . 49


About the Game Project . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 49
Creating the Game . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 52
Creating the Project . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 53
The BaseVectorShape Class . . ..... . . . . . . . . . . . . . . . . . . . . . 53
The Ship Class . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 55
The Bullet Class . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 56
The Asteroid Class . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 57
The Main Source Code File . . ..... . . . . . . . . . . . . . . . . . . . . . 58
Applet init() Event . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 59
Applet update() Event . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 60
Drawing the Player’s Ship. . . ..... . . . . . . . . . . . . . . . . . . . . . 61
Drawing the Bullets . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 61
Drawing the Asteroids . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 62
Screen Refresh . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 63
Thread Events and the Game Loop . . . . . . . . . . . . . . . . . . . . . . 63
Game Loop Update . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 64
Updating the Ship . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 65
Updating the Bullets . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 65
Updating the Asteroids . . . . ..... . . . . . . . . . . . . . . . . . . . . . 66
Testing for Collisions . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 68
Keyboard Events . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . . 69
Calculating Realistic Motion . ..... . . . . . . . . . . . . . . . . . . . . . 71
viii Contents

What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73


Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

PART II Java Game Programming . . . . . . . . . . . . . . . . . . . . . . . . 75

Chapter 4 Vector-Based Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . 77


Programming Vector Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Working with Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Working with Polygons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Rotating and Scaling Shapes. . . . . . . . . . . . . . . . . . . . . . . . . . . 83
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Chapter 5 Bitmap-Based Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . 89


Programming Bitmapped Graphics. . . . . . . . . . . . . . . . . . . . . . . . . 89
Loading and Drawing Images . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Applying Transforms to Images. . . . . . . . . . . . . . . . . . . . . . . . . 92
Transparency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Opaque Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Transparent Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Working Some Masking Magic . . . . . . . . . . . . . . . . . . . . . . . . . 99
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

Chapter 6 Simple Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107


Programming Simple Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
The Point2D Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Basic Game Entities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
The ImageEntity Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Creating a Reusable Sprite Class . . . . . . . . . . . . . . . . . . . . . . . . . 114
Contents ix

Collision Testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114


Sprite Class Source Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Testing the Sprite Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Chapter 7 Sprite Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123


Sprite Animation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Animation Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Drawing Individual Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Keeping Track of Animation Frames . . . . . . . . . . . . . . . . . . . . 126
Testing Sprite Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Encapsulating Sprite Animation in a Class . . . . . . . . . . . . . . . . 132
Testing the AnimatedSprite Class . . . . . . . . . . . . . . . . . . . . . . 135
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Chapter 8 Keyboard and Mouse Input . . . . . . . . . . . . . . . . . . . . . 141


Listening to the User. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Keyboard Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Listening for Keyboard Events . . . . . . . . . . . . . . . . . . . . . . . . 142
Testing Keyboard Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Mouse Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Reading Mouse Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Detecting Mouse Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Testing Mouse Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

Chapter 9 Sound Effects and Music . . . . . . . . . . . . . . . . . . . . . . . 155


Playing Digital Sample Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
x Contents

Getting Started with Java Sound . . . . . . . . . . . . . . . . . . . . . . 157


Playing Sounds. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Playing MIDI Sequence Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Loading a MIDI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Playing Music. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Reusable Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
The SoundClip Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
The MidiSequence Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

Chapter 10 Timing and the Game Loop . . . . . . . . . . . . . . . . . . . . . 177


The Potency of a Game Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
A Simple Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Overriding Some Default Applet Behaviors . . . . . . . . . . . . . . . 181
Feeling Loopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Recovering Long-Lost Applet Methods . . . . . . . . . . . . . . . . . . 183
Stepping Up to Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Starting and Stopping the Thread. . . . . . . . . . . . . . . . . . . . . . 184
The ThreadedLoop Program . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Examining Multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Exercise 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Exercise 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

PART III THE GALACTIC WAR PROJECT . . . . . . . . . . . . . . . . . . . . 191

Chapter 11 Galactic War: From Vectors to Bitmaps . . . . . . . . . . . . . 193


Improving the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Generalizing the Vector Classes . . . . . . . . . . . . . . . . . . . . . . . 194
The Main Source Code File: GalacticWar.java . . . . . . . . . . . . . 197
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Contents xi

Chapter 12 Galactic War: Sprites and Collision Boxes . . . . . . . . . . . 207


Creating the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
The Galactic War Bitmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
The New and Improved Source Code . . . . . . . . . . . . . . . . . . . 210
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

Chapter 13 Galactic War: Squashed by Space Rocks . . . . . . . . . . . . 227


Being Civilized about Collisions . . . . . . . . . . . . . . . . . . . . . . . . . . 227
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

Chapter 14 Galactic War: Entity Management . . . . . . . . . . . . . . . . 235


Adjusting to Event-Driven Programming . . . . . . . . . . . . . . . . . . . 236
Exploring the Class Library . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Building the New Game Class . . . . . . . . . . . . . . . . . . . . . . . . . 237
Enhancing Galactic War. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Exploring the New Galactic War Source Code . . . . . . . . . . . . . 249
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
On Your Own . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

Chapter 15 Galactic War: Finishing the Game . . . . . . . . . . . . . . . . . 275


Let’s Talk about Powerups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Ship and Bonus-Point Powerups . . . . . . . . . . . . . . . . . . . . . . . 276
Weapon Upgrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Enhancing Galactic War. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
New Sprite Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
New Game States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
New Sprite Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Health/Shield Meters, Score, Firepower, and
Game State Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
New Input Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Sound and Music Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Loading Media Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Game State Issue—Resetting the Game. . . . . . . . . . . . . . . . . . 287
Detecting the Game-Over State . . . . . . . . . . . . . . . . . . . . . . . 288
Screen Refresh Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
xii Contents

Preparing to End . . . . . . . . . . . . ........ . . . . . . . . . . . . . . 291


Updating New Sprites. . . . . . . . . ........ . . . . . . . . . . . . . . 292
Grabbing Powerups . . . . . . . . . . ........ . . . . . . . . . . . . . . 294
New Input Keys . . . . . . . . . . . . . ........ . . . . . . . . . . . . . . 296
Spawning Powerups . . . . . . . . . . ........ . . . . . . . . . . . . . . 299
Making the Shield Work. . . . . . . ........ . . . . . . . . . . . . . . 301
Making Use of Weapon Upgrade Powerups . . . . . . . . . . . . . . 302
Tallying the Score . . . . . . . . . . . ........ . . . . . . . . . . . . . . 305
What You Have Learned . . . . . . . . . ........ . . . . . . . . . . . . . . 306
Review Questions . . . . . . . . . . . . . . ........ . . . . . . . . . . . . . . 306
On Your Own . . . . . . . . . . . . . . . . . ........ . . . . . . . . . . . . . . 307

Chapter 16 Galactic War: Web Deployment . . . . . . . . . . . . . . . . . . 309


Packaging an Applet in a Java Archive (JAR) . . . . . . . . . . . . . . . . 309
Using the jar.exe Program . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Packaging Galactic War in a Java Archive . . . . . . . . . . . . . . . . 312
Creating an HTML Host File for Your Applet . . . . . . . . . . . . . . . . 315
A Simple HTML File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Testing the Deployed Applet Game . . . . . . . . . . . . . . . . . . . . 317
What You Have Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Epilogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

Appendix A: Chapter Quiz Answers. . . . . . . . . . . . . . . . . . . . . . . . . . 321


Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Introduction

This book will teach you how to write Java games that will run as applets in a web
browser. The goal is to develop games for the casual game market. Game pro-
gramming is a challenging subject that is not just difficult to master—it is
difficult just to get started. This book takes away some of the mystery of game
programming by explaining each step along the way, from one chapter to the
next. I assume that you have a little Java programming experience, but even if you
have never used Java before, you should be able to keep up.
This book reads like a hobby book, with no pressure and limited goals, because the
primary purpose of this book is to help you have fun learning how to program web-
based games. Typing in long source code listings out of a book is not fun, so I don’t
ask you to do that in every single chapter in this book. Instead, you will learn to write
short programs to demonstrate the major topics, and over time you will get the hang
of it. There is no memorization required here, because I’m a firm believer that
repetition—practice—is the best way to learn, not theory and memorization.
Note
Java is a programming language invented by Sun Microsystems. The primary goal of Java’s
developers was to be able to compile a program once and have it run on many different computer
systems. The Java compiler creates a ‘‘bytecode’’ file containing virtual machine instructions that
the JRE (Java Runtime Environment ) can execute on any computer system upon which it is
installed.

You will learn how to write a simple Java program in the first chapter. From
there, you will learn the details of how to write games that will run in a web
xiii
xiv Introduction

browser. We cover source code at a pace that will not leave you behind. After you
have learned enough, you will write your first web-based game, and you will then
learn new subjects in each chapter to increase your game programming skills. By
the end of this book, you will have learned to create a complete web-based game
called Galactic War, and you will be able to deploy it to your website in a Java
Archive (JAR) file. And I’m not talking about some half-baked simulation posing
as a game; I’m talking about a real game that is retail quality, suitable for pub-
lishing in the casual game market. There are thousands of casual gamers who are
paying to download games of this type from the many casual game sites on the
web today—such as Real Arcade (www.realarcade.com). By learning how to
create a casual game, you may even be preparing for a career in the game
industry, developing games for Microsoft Xbox Live Arcade and other com-
mercial endeavors.
Note
Web-based games are video games that are installed on a website and run in a web browser, so
that end users do not need to install the game. Some games are able to store high-score lists and
player data on the web server. The most popular type of web game is a ‘‘casual game.’’

While we’re on the subject of casual games, you can even program your own
Xbox 360 games, distributed on Xbox Live Arcade, using Microsoft’s free XNA
Game Studio Express software. Although this subject is beyond the scope of this
book, I bring it up because Microsoft’s C# language is unabashedly similar to
Java. Thomson published a book on this subject by Joseph Hall, titled XNA Game
Studio Express: Developing Games for Windows and the Xbox 360 (Thomson
Course Technology PTR, 2007).
It all begins here! Are you serious about this subject and willing to learn? As a
senior instructor of game development, I am scrutinized daily by students who
eat, drink, and breathe video games. I cannot create something that stinks, or I’ll
never hear the end of it! So I am as motivated to teach you cutting-edge game
development techniques here as I am in a real classroom setting, by students who
are paying a lot more than the retail cost of this book to learn these concepts. I
have used this book in several Java courses already, so you are guaranteed high-
quality material in these pages that will not be a waste of your time.

What Will You Learn in This Book?


This book will teach you the difference between Java applications and applets
(which run in a web browser). You will then learn about Java’s graphics classes
Exploring the Variety of Random
Documents with Different Content
viipyisikin.

— Ei minullakaan ollut tarkoitus viivytellä, mutta aika solahti aivan


huomaamatta.

— No olkoonhan tämä kerta tänään, kun ei vaan enää solahtaisi.

Muistutus ei ollut tämän ankarampi, mutta siitäkin jo Metka


ymmärsi ettei ole helppo olla herranakaan. Säännöt ja määräykset
ovat tarkalleen noudatettavat. Sen hän tiesi virkaan astuessaankin,
vaikkei uskonut, että niitä noin hiuskarvalleen on seurattava.

MERKKIPÄIVIEN VIETTO.

Mutta näitten virallisten sääntöjen ulkopuolella on toisia, aikojen


kuluessa vakaantuneita sääntöjä, joita valistuneessa seurassa
kasvanut ei voi koskaan sivuuttaa. Yksi sellainen on nimipäivän
vietto. Metkakin tahtoi sen viettää virkamiehen arvolle sopivalla
tavalla. Varsinaisen asuinpaikan lähistöllä ei ollut kyllin tilavata
huoneustoa, ja siksipä hän matkusti tätä merkkipäiväänsä
viettämään naapuri-kirkonkylän majataloon, samaan, jossa oli
tuliaiskemutkin vietetty. Hän oli muistutuksen saatuansa elellyt
tavallista säännöllisemmin ja säästävämmin, joten ei ollut puutetta
varoistakaan.

Klemensin päivä on marraskuun lopulla, melkeinpä lyhimmän ja


pimeimmän päivän aikana. Kemut alkoivat iltasella ja kestivät tietysti
koko yön. Aamusella, vierasten poistuessa, nukkui päivän sankari ja
havahti vasta toisen pimeän tultua. Hän oli isävainajansa
hautajaisajoilta tottunut siihen, että osasi jatkaa yksinäänkin, jos
eivät muut joutaneet. Nytkin hän jatkoi, ja muitten laskelmien
mukaan oli tätä jatkosta kokonainen viikko, vaikka nimipäiväsankari
luuli tätä yhdeksi yöksi, kun ei sattunut koskaan olemaan valveella
päiväseen aikaan. Olisi luullut, ettei kellään ole mitään
muistuttamista, jos niin merkillisellä miehellä kuin Metkalla olisi
pitempikin nimipäivä. Niin ei kuitenkaan ollut. Kun hän palasi virka-
alueelleen, sai hän esimieheltään tietää olevansa vuoden vaiheessa
vapaa apulaisen toimesta. Syynä kuului olevan tuo pitkä nimipäivän
vietto.

Metka ei viitsinyt ryhtyä mihinkään selityksiin. Olihan tämä vaan


hyvin tavallinen viran vaihdos, vaikkapa ei vielä ollutkaan nimitystä
toiseen virkaan. Hätäilemättä hän lopetteli töitänsä ja teki
matkavalmistuksia. Hän tiesi kokemuksesta, ettei tuntemattomissa
majapaikoissa, varsinkaan hotelleissa olla kyllin huomaavaisia
sellaisille matkustajille, joilla ei ole matkalaukkua, n.s. "kapsäkkiä".
Siksipä hän vähää ennen lähtöänsä sai muutamalta tuttavaltaan
käytetyn matkalaukun, jonka täytti heinillä, että se herättäisi
suurempaa kunnioitusta hotellien palvelijoissa.

Eron hetken tultua ei Metka lähtenyt niin kuin jänis haavalta, vaan
valmisti erokekkerit samassa paikassa, jossa oli viettänyt
nimipäivänsäkin ja tuliaiset. Joku ystävä yritti puhettakin pitämään ja
pitikin, vaikkei siinä tullut sanotuksi muuta kuin että "koska tämä
meidän ystävämme muuttaa pois, niin… niin… niin… ryypätään, eli
juodaan…" Ja niin tapahtuikin.

SUORITUKSIA.
Kekkerin lopulla toi majatalon isäntä laskun, johon oli merkitty sekä
ruoka että juomapuolet. Metka katsahti vain loppusummaan ja
virkkoi:

— Aivan oikein. Merkitse minun tililleni, minä sitten tuonnempana


suoritan.

— En minä tyydy siihen, virkkoi isäntä. Sinä matkustat pois tältä


paikkakunnalta ja tuskin muistat milloinkaan suorittaa.

— Älä nyt epäile, kyllä minä muistan.

— Epäilen minä. Se on suoritettava heti.

— Sinäpä nyt… ei minulla ole rahaa.

— Silloin minä otan matkalaukkusi.

— Sama se… ota vaan.

Niin pääsi Metka taipaleelle. Mutta kun rahat olivat todella vähissä
kannoissa ja tuokin luottoa lisäävä matkalaukku oli jäänyt
ensimäiseen majataloon, täytyi hänen hankkia itselleen kyytimies,
joka vei pitemmän matkan kuin mitä majatalosta annetaan. Hän oli
liikemiesten sanontatavan mukaan "hyvittänyt" yhden velkamiehensä
ja kun ei tullut monen peninkulman mutkaa, päätti hän "hyvittää"
toisenkin ja käski kyytimiehensä ajaa Tuikkuniemeen. Tänne päästyä
tuli isäntä vanhaa koulutoveriansa vastaan kartanolle ja alkoi kysellä
minnekä nyt matka.

— Tulin vaan sinun luonasi käymään, selitti Metka. Satuin


muistamaan, että minä olen sinulle velassa, ja kun olen kuullut, että
muutamat velalliset kiertävät saamamiestään, niin tulin, ettet
minusta sellaista luulisi. Ja maksahan nyt tuolle miehelle kyytipalkka.

Vanha koulutoveri maksoi aivan viivyttelemättä. Puoli kuukautta


vierailtuaan virkkoi Metka:

— Kyllä sinä jo uskonet, etten minä kierrä saamamiestäni.


Laitapahan nyt kyyti kaupunkiin.

— Kyllä minä uskon, vakuutti Tupakainen ja lähti sitten itse kyytiin


aina kaupunkiin asti.

Näin oli Metkan ensimäinen virkavuosi päättynyt.

LANKONSA KIRJURINA.

Metkan viipymisellä koulutoverinsa luona oli toinenkin tarkoitus, eikä


siis vain varmuuden antaminen siitä, ettei kierrä velkamiestään. Hän
arveli viraston herrojen tällä aikaa toimittavan hänelle toisen
virkapaikan. Siinä toivossa hän meni lankonsa luokse ja kysyi:

— Jokohan minulle on annettu määräys toiseen virkaan?

— Toiseen virkaan! jamasi tämä vähemmän ystävällisellä äänellä.


Olisit ollut kunnollisesti, siellä, missä olit.

— Olinhan minä aikani.

— Olit siten, että jätit vähä väliä virkatehtäväsi viikon päiviksi ja


menit juopottelemaan.
— Onko sieltä sellaistakin kerrottuna.

— On. Ja kyllä silloin saapi odottaa määräystä.

— Kaikkia minä kuulen, tuumaili Metka. Mutta samapa se.

— Eihän se ole aivan sama, huomautti lanko. Pitäisi kai sinun


jotain tointa etsiä.

— Laita vaan, kyllä minä teen.

— Pitäneehän sinulle laittaa.

Metka sai omakseen pienen kammarin ja lanko toimitti


kirjoitustyötä. Tämä olikin mukavampaa kuin matkusteleminen
kylästä toiseen velkaantuneiden maalaisten tavaroita kirjoittelemassa
ja myömässä. Lähellä olivat lääkkeetkin, jos tarvitsi illan tullen
väsynyttä ruumistaan virkistää.

Mutta ihmeen paljon olivat ihmiset ennättäneet muuttua yhden


vuoden aikana. Ne olivat tulleet vähemmän kohteliaiksi ja
kitsaammiksi. Halullisia rahan lainaajia oli hyvin harvassa ja jos meni
ostamaan "tavaraa", niin ei rahatta uskottu ensinkään. Metka ei
käsittänyt, mikä pilasi ennen niin avuliaat ihmiset, kunnes joku
typeryydessään ilmaisi, että sisar on käynyt kieltämässä.

— Ei silläkään ollut muuta tekemistä, virkkoi Metka


loukkaantuneena… Mutta samapa se.

Hän päätti ostaa tästä puoleen käteisellä, vaikkei se ollut oikein


arvokasta, eikä mukavaakaan, kun täytyi pyytää langolta
kirjoituspalkkoja kovin pienissä erissä. Kerrankin hän meni
pyytämään kuutta markkaa.
— Mistäpä minä antanen, sanoi lanko kiusaantuneena. Ei ole
itsellänikään yhtään markkaa.

— Vai ei ole sinullakaan, virkkoi Metka ja lähti kävelemään.

Tuskin oli tunti kulunut aikaa, kun hän palasi ja levitti lankonsa
eteen pöydälle kolmesataa markkaa eri kokoisia rahoja ja sanoi:

— Siinä on rahaa. Annappa nyt kuusi markkaa.

Lanko ihmettelemään.

— Mistä sinä nämä sait?

— Tuolta kauppaneuvos J:ltä.

— Miten sinä sanoit?

— Sanoin vaan, ettei sinulla ole rahaa yhtään markkaa.

— No, mutta sinähän alennat tällaisilla teoilla minun maineeni.

— Ole joutavata, sanoi Metka. Ei raha alenna mainetta. Se tuo on


häpeä, ettei sinun arvosellasi miehellä ole rahaa… Annahan ne kuusi
markkaa.

Markat tulivat, sillä nyt ei ollut mitään esteitä. Lanko sai toimittaa
rahat takaisin, mutta samalla hän selitti, ettei ole vastaisuudessa
annettava hänen maksuansa vastaan.

Kun nuo kuusi markkaa olivat loppuneet ja Metka tuli pyytämään


rahaa, ällistyi hän ihmeesti, kun lanko ilmoitti antaneensa pienten
raha-asiain hoidon rouvalleen, Metkan sisarelle, jolta niitä nyt on
pyydettävä.
— Sinäkö sen niin järjestit? kysyi Metka.

— Itse häntä halutti ottaa hoitaakseen.

— Ja sinä myönnyit… Olen pitänyt sinua tarmokkaana miehenä, ja


nyt tuollaiseen suostuit.

— Pitäähän täällä taipua naistenkin tahdon alle.

Lanko sanoi näin Metkaa rauhoittaakseen, ettei tämän ja uuden


rahastonhoitajan välit kovin kiristyisi. Pitempiaikaista sovintoa hän ei
sittenkään uskonut syntyvän, päätellen siitä, kun sisar oli uhannut
rahastonhoitajaksi ruvetessaan antaa ainoastaan tosi-tarpeisiin.
Harvoin on kahdella ihmisellä samat käsitykset tosi-tarpeista,
lähisukulaisilla vieläkin harvemmin.

Tosi-tarpeellisia olivat sisaren mielestä ruoka ja vaate, joita taas


Metka piti aivan sivuasioina.

Ja kun yksimielisyyden saavuttaminen näyttäytyi aivan


mahdottomalta, päätti Metka jättää koko talon ja muuttaa toiseen
paikkakuntaan. Siihenkin tarvittiin rahaa, ja kun ei ollut toivoa
sisarelta, meni hän vanhan tuttavansa kauppaneuvos J:n luokse ja
sanoi:

— Lainaapa kolmekymmentä markkaa, minun täytyy matkustaa


pois.

— Miksikä pois? Eikö langollasi ole enää työtä?

— Olisihan siinä, mutta sisar on herennyt niin häjyksi, että pois


minä matkustan.
— Taidat puhua liikoja, epäili kauppaneuvos. Eipä siitä ihmisestä
ole ennen sellaista kuulunut.

— Ei se nytkään muille, vaan minulle, selitti Metka. Jokaisesta


markasta pitäisi tehdä tili mihin sen panee. Kuka tätä kärsii.

— Kyllä sisaresi on oikeassa, puolusti kauppaneuvos. Jokaisessa


hyvin järjestetyssä liikkeessä ja taloudessa merkitään pennikin, jopa
että markka.

— Ei minun taloudessani merkitä, sanoi Metka. Annahan


kolmekymmentä markkaa, että pääsen lähtemään.

— Älä lähde minnekään, ole paikallasi.

— En ole.

Kun kauppaneuvos huomasi taivuttelunsa turhaksi, antoi hän


pyydetyn summan.

Lähtö ei kumminkaan tapahtunut aivan määrälleen. Luonnollisena


viivykkinä oli ensinnäkin läksiäisten vietto, monta muuta lisäksi.
Suoraluontoinen mies ei poistu paikkakunnalta järjestämättä
asioitansa. Niinpä Metkakin vielä lähtönsä viime hetkenä poikkesi
kauppaneuvoksen luokse ja virkkoi:

— Poikkesin ennen lähtöäni sanomaan, että koska sinä haluat


pitää tarkan ja järjestetyn kirjanpidon taloudessasi, niin ehkäpä
merkitsetkin ne minulle lainaamasi kolmekymmentä markkaa
epävarmojen saamisten joukkoon.

Kauppaneuvos ei tuosta yhtään hämmästynyt.


— Merkitään vaan… taikka jos haluat, niin pyyhkäistään pois
kirjoista.

— Älä nyt toki, kielteli Metka. Ei sitä vielä niin tarkkaan tiedä.

— Tehdään vaan kuten haluat.

Ja Metkan velka siirrettiin epävarmojen saatavien joukkoon.

TOISEN LANKONSA APULAISENA.

Jo vanhanaikaisessa katekismuksessa oli vakava varoitus siitä, ettei


pidä kenenkään hyvää nimeä eikä arvoa millään tavalla turmella.
Tämän oli Metkakin lukenut jo koulupoikana, mutta vasta lankonsa
huomautuksesta hän oikein käsitti, miten varovainen siinä asiassa
täytyy olla. Siksipä hän matkustaessaan toisen lankonsa, maalla
asuvan kihlakunnan tuomarin luokse, tilasi viimeisestä majatalosta
kaksi hevosta. Tosin eivät ajopelit olleet kahdelle hevoselle
varustetut, mutta kun kyytimies solmeili köydenpään vara-aisaksi,
niin kaksivaljakko siitä tuli kuin tulikin. Vastaan tulevat väistyivät
hyvin kunnioittavasti tien syrjälle.

Valjakon lähestyessä määräpaikkaa istui arvoisa lanko,


kihlakunnan tuomari, pöytänsä ääressä ikkunan edessä, josta näki
etäälle koivukujaa pitkin. Huomasipa hänkin kaksivaljakon.

— Kukahan sieltä kahdella hevosella tulee, hän virkahti.

Ylhäiset tuttavat muistuivat mieleen ja hän nousi mennäkseen


muuttamaan päällensä juhlallisempaa pukua. Katsahti kumminkin
vielä kerran kujalle, ja kun ajopelit näyttivät kovin kapeilta, niin jäi
odottamaan. Eivät nuo olleet vaunut, mutta mitkä ne sitten olivat.
Nyt ne jo lähestyivät taloa ja kyytimies hyppäsi avaamaan porttia.
Tuomari asetti rillit nenälleen.

— No, mutta kenet minä näen… Metka totisesti…!

Tuomarin huudahdus osoitti, ettei kaksivaljakko ollut turhan tautta.


Arvoa se lisäsi. Kyytimieskin teki mitä vähänkin osasi herransa
avustukseksi rattailta laskeutuessa. Epäilemättä oli tämä suuri herra,
jonka näki siitäkin, että tuomari itse seisoi rappusilla
vastaanottamassa.

Kyytimies alkoi kääntää hevosiaan, joita tuomari yhäkin katseli, ja


pistettyään Metkalle kättä, kysyi:

— Mikä rakkine se on tuo?

— Mikä tuo?

— Tuo jolla tulit.

— Etkö ole ennen nähnyt parihevosia?

— En tuollaisten kyytikärrien edessä ole nähnyt enkä ymmärrä


mitä varten niitä on kaksi.

— Luulinpa sinun ymmärtävän, ettei kihlakunnan tuomarin kotiin


sovi ajaa yhdellä hevosella.

— Siitäkö tämä johtuukin!

— Ajattelitko minun itseni vuoksi?


— En tässä osannut ajatella mitään, ihmettelin vaan, mutta nythän
minä ymmärrän, että tämä on "hunööri" minulle.

— Tietysti sinulle ja tottahan nyt mielihyvällä maksat kyytimiehelle


palkan.

— Kukapa ei näin harvinaisesta kunnioituksesta maksaisi vaikka


paljonkin.

Kohta tiesivät muutkin pitäjän herrat miten arvokkaasti heidän


uusi tuttavansa on saapunut. Ja kun Metka viipyi paikkakunnalla, niin
ei hän jättänyt muitakaan aivan osattomiksi samansuuntaisista
"hunööreistä".

Metkan tulo sattui otolliseen aikaan. Entinen kirjuri oli kuollut, ja


kukapa hänen paikalleen olisi ollut soveliaampi. Hän pääsi heti kohta
työhön, ja kun istuntokausi joutui, tuli hänen toimia pöytäkirjan
pitäjänä, joka oli paljoa arvokkaampaa kuin jäljennösten
kirjoittaminen kaupunkilangon luona. Muutenkin oli maaelämä
muhkeampaa. Hauskoja toti-iltoja vietettiin tuon tuostakin, joihin
pitäjän herrat kokoontuivat. Se oli toista kuin ryyppyjen naukkiminen
jossain nurkkakapakassa. Metka olisi vaan toivonut, että jokainen ilta
olisi ollut toti- ilta. Onhan yksi päivä yhtä hyvä kuin toinenkin. Hän
huomautti tästä lankoansa, mutta tämä katsoi sen mahdottomaksi ja
virkkoi: mistä sitä riittäisi, hyvä kun kerran viikossakaan.

Metka jäi siihen käsitykseen, että suurimpana esteenä oli aineen


puute. Kuka vaan sen poistaisi, niin olisi kaikki hyvin. Ja tulikin se
kerran poistetuksi. Lanko laittoi hänet ennen käräjien alkamista
ostamaan kaupungista leimamerkkejä ja antoi sitä varten
viisisatasen. Kyyti oli kotoa, samoin eväät, joten ei rahaa muuhun
tarvinnutkaan. Oli käytävä kiireesti, joten tehtiin varma määrä milloin
on jouduttava takaisin. Metka oli aivan samaa mieltä ja meni heti
kaupunkiin tultua toimittelemaan asioitansa. Ensimäinen ja tärkein
oli tietysti konjakkikauppa.

— Tunnettehan minut… hän esitteli itsensä ja käski mittaamaan


kaksi kannua parasta konjakkia sekä merkitsemään hänen
laskuunsa.

— Kyllä herra tunnetaan, sanoi myöjä, mutta konjakkia ei anneta


laskuun.

Jos tällainen vastaus olisi annettu kotikaupungissa, ei hän olisi


yhtään ihmetellyt, mutta kun täällä pienessä, vähemmän tunnetussa
kaupungissa rohjettiin sanoa tuolla tavalla, niin se oli jo liikaa.

— Vai ei anneta, sanoi Metka arvonsa tuntevalla äänenpainolla.


Onkos teillä sellainen astia, joka maksaa viisisataa markkaa.

— On, jos vaan herralla on rahaa.

Metka levitti pöydälle viisisatasen ja ilmoitti mihin astia on tuotava.

— Ja sen pitää olla hyvää, hän muistutti lähtiessään.

— Parasta mitä löytyy, vakuutti myöjä.

Nyt hän meni leimamerkkien myymälään ja esitteli itsensä.

— Varmaan tunnette kihlakunnan tuomari B:n, lankoni. Antakaa


hänen laskuunsa viidensadan markan edestä leimamerkkejä.

Täällä ei tehty pienintäkään vastaväitöstä.


Nyt olivat asiat toimitetut, mutta paluumatkalle lähtö jäi
huomiseen. Täytyi tutkia onko tavara sopimuksen mukaista ja, jos
siksi tunnetaan, palkata hevonen astiata kuljettamaan. Tutkimiseen
kului yö ja puolet seuraavasta päivästäkin. Sitten alkoi matka. Herra
ajoi edellä, pieni tutkimusnassakka mukanaan ja perästä tuli ison
astian vetäjä. Tätä kallista kuormaa täytyi kuljettaa varovasti, joten
matka kului hitaasti. Ja kun eväitä oli näin runsaasti, poikkesivat he
tavallista useammin tienvierustaloihin syöttämään. Täten kului aikaa
paljo pitemmälti kuin oli lähtiessä laskettu.

Tuomaria alkoi huolestuttaa. Käräjäin alkamispäivä oli käsissä eikä


leimamerkkien hakijoita kuulunut eikä näkynyt. Jokohan varotuksista
huolimatta ryhtyi ryyppimään ja tulee milloin tulee, tyhjin käsin.
Minkä se vähäinen renkipoika taitaa. Tuomari tähysteli vähä väliä
tielle ja harmitteli. Nyt tässä sotku syntyy. Rahat menivät, ja uusi
reissu.

Kun Metka viimeinkin ajoi rappusten eteen, kiirehti tuomari


vastuukseen ja ensi sanakseen kysyi:

— Saitko leimamerkkejä?

— Sain, örähti Metka, ja onpa vielä muutakin.

— Kyllä huomaan, että on ollut muutakin, mutta pääasia on


leimamerkit.

Samassa joutui toinenkin hevonen ja pysähtyi edellisen jälkeen.

Nyt sen huomasi tuomarikin ja kyseli:

— Mikä se tuo on? Mitä tynnöriä se vetää?


— Siinä sitä on, selitti Metka.

— Mitä siinä on?

— Siinä on konjakkia ja onkin hyvää.

— Konjakkiako ja täysi tynnöri?!

— Täysi.

Tuomari ei osannut muuta kuin ihmetellä. Hän ei vähään aikaan


ymmärtänyt, miten tästä selviää ja miten tuon runsauden sarven
kanssa menetellään.

Metka toimitti asiansa loppuun asti ja antoi neuvoja kyytimiehelle.

— Vieritä tynnöri tuonne kellarin eteen, mutta vieritä varovasti ja


tule sitten saamaan palkkasi.

Nyt ei tarvinnut valittaa aineen vähyyttä, vaikkapa valmisti


totipöydän joka illaksikin.

Mutta kun alkavilla käräjillä oli lain mukaan sakotettava


salaviinankauppiaita, koetti tuomari löytää entistä enemmän
lieventäviä asianhaaroja, sillä Metkan tuomaan tynnöriin täytyi ottaa
maksuosallisiksi muitakin pitäjän herroja.

HAUTAJAISET.

Kun merkillinen henkilö kuolee, on hänen elämäkertansa ja pitkä


ansioluettelo seuraavan päivän sanomalehdessä. Siinä luetellaan
tarkalleen mitä kouluja vainaja on käynyt, milloin minkin tutkinnon
suorittanut ja missä viroissa ja luottamustehtävissä toiminut. Sen,
että nämä tiedot tulevat näin sukkelaan haalituiksi, arvelevat monet
mahdolliseksi ainoastaan siten, että elämäkerta on kirjoitettu
viikkoja, ehkäpä vuosiakin aikaisemmin, johon ei kuolonsanoman
saavuttua tarvitse lisätä yhtään sanaa, kun elämäkerta alkaa
sanoilla: eilen vaipui j.n.e.

Asianomainen olisi varmaan eläessäänkin utelias tietämään mitä


hänestä kuoltua sanotaan, ja se toivo toteutuisikin, jos
sanomalehdet olisivat yhtä herkkäuskoisia kuin yksityiset ihmiset
ennen aikaan. Silloin näet sattui, että jotkut kuuluisat henkilöt saivat
kuolla useita kertoja. Metkakin joutui tästä kunniasta osalliseksi,
vaikkei hän ollut mikään kuuluisuus eikä muutenkaan ikäloppu. Hän
oli vuosien kuluessa ennättänyt asua monissa paikoissa ja toimia
viroissa, milloin tuomarien milloin nimismiesten apulaisena ja väliin
itsenäisenä maalaisten asianajajana. Tästäkö muuttelevaisuudesta
lienee johtunut, mutta niin se sattui, että monet huhut hänen
kuolemastaan osottautuivat perättömiksi.

Kerrankin hän oleskeli N:n pitäjässä odottelemassa käräjien


alkamista. Puheenjohtajana tuli siellä toimimaan virkaa tekevä
varatuomari Böklin, hauska mies ja Metkan hyvä tuttava. Vanha
tuomari ei enää matkustellut kihlakuntansa maaseudun käräjillä,
vaan asui kaupungissa. Siellä varatuomarikin asui istuntojen
väliaikoina. Mutta juuri kun hänen piti lähteä N:n pitäjän käräjille, oli
levinnyt tieto, että Metka on kuollut. Kun hän lähtöpäivänään meni
käymään esimiehensä, vanhan tuomarin kotona, tuli siellä
ensimäisenä puheeksi juuri tuo asia.

— Metkako kuuluu kuolleen ja aivan äkisti.


— Niinpä kerrotaan, vastasi varatuomari vakavana, vaikka
hänelläkin taisi olla osansa tuon huhun liikkeelle laskemiseen.

Vanha tuomari huokasi.

— Vai jo päättyi hänenkin elämänsä ura. Monesti toimittiin


yhdessä, ja olkoonpahan miten hyvänsä, mutta kaipauksella häntä
muistelen. Tulisin saattamaan viimeiseen lepoonkin, vaan on niin
etäällä. Haluaisin kumminkin jollain tavalla ottaa osaa hänen
muistonsa viettämiseen. Oletko niin ystävällinen ja toimit minun
puolestani.

— Ky-kyllä, jos vaan…

Varatuomarin mieleen jylkähti, että häntä ehkä pyydetään


hautaseppeleen laskijaksi.

— En minä mitään erikoista, sanoi vanha tuomari. Ajattelin vaan,


että veisit mennessäsi hiukan juomavaroja ja tarjoaisit
hautajaispäivän iltana paikkakunnan herroille totilasit.

Varatuomari ihastui. Juuri tätä hän oli odottanut ja virkkoi nyt


varmalla äänellä:

— Hyvin kernaasti minä sen toimitan.

Hän aprikoi, kysyisikö miten hautajaisvarojen kanssa menetellään,


jos huhu on perätön, mutta katsoi viisaimmaksi olla vaiti. Täytyihän
vanhan lakimiehen ymmärtää, että asialla on aina kaksi puolta: jos ei
ole syytä surujuhlan viettoon, on vietettävä ilojuhla ja sitä
suuremmalla syyllä, koska varatut aineet siihen hyvin soveltuvat.
Iloisena lähti varatuomari toimittamaan ostoksia ja panipa omiakin
varojansa lisäksi. Saavuttuaan virantoimitus-alueelleen ei siellä
kuulunut mitään Metkan kuolemasta eikä hän sitä kysellytkään.
Kumminkin hän lähetti heti kohta kutsut kaikille niille herroille, jotka
olivat ennenkin osoittaneet olevansa kykeneviä ja halukkaita milloin
mitäkin kuollutta "hautaamaan".

Muissa hautajaisissa ei itse asianomainen ota osaa mihinkään


menoihin, ei ainakaan ruumiillisesti, mutta Metka kilisti ja kallisti yhtä
ahkerasti kuin toisetkin. Ja kaikki nyt muistivatkin kilistää ja juoda
hänen terveydekseen. Menojen jatkuessa muutamat kilistivät niin
rajusti, että lasit lohkeilivat, ja huusivat: eläköön Metka! Ei hän
nytkään havainnut olevansa sen enempää huomattu, touhusi vaan
toisten mukana. Kokoonkutsuja oli varottanut, ettei asiata ilmaista
ainakaan alussa. Viimein meni joku Metkan rinnalle istumaan ja
kysyi:

— Tiedätkö sinä tämän illanvieton merkitystä?

— En minä tiedä, vastasi Metka.

— Nämä ovat sinun hautajaisiasi.

— Mi… mi… mitä tämä on, en minä ymmärrä, kyseli Metka


ällistyneenä.

Varatuomari jouduttautui selittämään.

— Niin, kyllä nämä ovat sinun hautajaisiasi. Kaupungissa oli näet


levinnyt huhu, että sinä olet äkkiä kuollut, ja herrassyötinki A. lähetti
konjakkia ja valtuutti minun pitämään sinulle hautajaiset, ja nyt näitä
on pidetty ja pidetään.
Kaikki odottivat selityksen vaikutusta. Mutta he tulivat jotenkin
noloiksi, kun ei Metkan suusta lähtenyt yhtään sanaa, vesikarpalot
vaan kihosivat silmistä ja valuivat alas kasvoille. Varatuomarikin
nolostu, mutta alkoi kumminkin lohdutella.

— Älä nyt kuitenkaan ota tätä asiata noin vakavalta kannalta äläkä
suinkaan loukkaannu. Leikkiähän tämä on.

Metka pyyhkäsi vedet silmistään ja kohauttaen olkapäitään virkkoi:

— Vähät minä semmoisista… Siitä minun mieleni tuli liikutetuksi,


kun huomaan, että minulla on todellisia ystäviä… Olkoonpahan
elämäni mennyt muuten miten hyvänsä, mutta kun on saanut elää
tämmöisiä hetkiä, niin on se kuitenkin suloista.

Nolostuneet kuulijat pääsivät entiselleen. Kaikilla oli jotain


sanomista. "Oikein, Metka." — "Oletko sinä epäillyt, ettei sinulla olisi
ystäviä." — "Eläköön Metka!"

Vieläkin pyrkivät vedet kihoilemaan Metkan silmistä. Mutta viimein


hän pudisti pois kaikki liikutuksen jäljet ja polveensa lyöden
huudahti:

— Tahtoisin minä vaan tietää, löytyykö toista, joka on ollut


"pätkässä" omissa hautajaisissaan!

Sitäpä ei yksikään tietänyt, ja se onkin "rekorti", jota ei jokainen


saavuta.
YKSI KERRALLAAN.

Vanha Partanen ei viskellyt vihojaan "jumalanviljalle", vaan ei


myöskään käyttänyt väärin. Harvoin hän sitä osti itselleen, mutta oli
kaupungissa käydessään valmis tuomaan köyhälle tai rikkaalle, joka
vaan antoi rahan. Ja vaivoistaan ei vanha Partanen ottanut
penniäkään. Sen verran tuli toki jokaisen auttaa lähimaistaan. Ja
ettei kukaan ajattelisi hänen kuljettelevan "jumalanviljaa" nautinnon
toivossa, vielä vähemmin himossa, ei hän koskaan ottanut hyvästä
työstään kuin yhden ryypyn, senkin aina hatun heittäen. Jos sitten
jonakin toisena päivänä sattui uusi tarjous, niin se tuli muusta
naapurien ystävyydestä ja oli aivan eri asia.

Ja tätä hän ei salannut pojaltaankaan, nuorelta Samulilta. Se sai


olla aivan vierellä katsomassa. Ja jos joku halusi tarjota tällekin, oli
vanha Partanen kehottamassa poikaansa ja puhui hyvin vakavasti
aivan näillä sanoilla:

— Ota pois, kun annetaan, älä houkututa. Ei se miestä pahenna,


jos ei mies itseänsä. Minä olen maistanut polven korkuisesta ja
tiedän sanoa mitä se on ja miten sitä on käytettävä. Se on yhtä
virkistävää kuin leipäkin, sillä se on valmistettuna samoista
jumalanviljoista. Mutta kun tähän on erotettu ainoastaan virkistävin,
puhtain ravintoaine, niin ei sitä saa nauttia samalla tavalla kuin
leipää, miten paljon milloinkin. Yksi ryyppy kerrallaan ja sekin niin
pieni, ettei jalat vähintäkään horjahtele. Ja pää pitää pysyä aina
selvänä, että olkoonpa toimitettavana miten tärkeitä asioita hyvänsä,
ei saa tulla hairahduksia. — Jos, poikani, seuraat näitä sääntöjä, niin
ota ryyppy, kun annetaan, mutta älä ota toista.

Samuli-poika muisti tämän säännön ulkoa ja kunnioitti kultaisena


ohjeenaan. Hän oli päättänyt sitä seurata järkähtämättä ja suoritti,
erittäinkin isänsä läsnä ollessa, tuon "jumalanviljan" nauttimisen
kaikella kunnioituksella: hatun heittäen ja isän tavalla kiittäen, jotta
tämä ja muutkin näkisivät, ettei pojasta polvi muutu. Vanha
Partanen näki sen ja iloitsi. Hän saattoi olla tyytyväinen sekä
itseensä että poikaansa. Hänellä on poika, jota ei maailman myrskyt
horjuttele.

Tyytyväinen oli Samulikin. Sopi olla ystävänä kaikkien kanssa. Jos


juopommat alkoivat tyrkyttää lakkaamatta "jumalanviljaansa", torjui
Samuli tämän tuumittelemalla: yhteen se minulta asettuu, ei
enempää. Hän pääsi aikamieheksi kertaakaan poikkeamatta isän
tavoista. Olisi ehkä päässyt pitemmällekin, mutta kerran kylän
poikain kanssa ryypiskellessä huomasi naapurin Pekka tuon Samulin
selityksen kovin yksipuoliseksi. Samuli oli silloinkin lausunut, että yksi
kerrallaan, ei enempää, jolloin Pekka paukautti sanoa:

— Kuka sinulle tarjoaakaan kahta yhtäaikaa. En minäkään ole


ottanut, en ikäpäivänä kahta ryyppyä samalla kerralla.

— Pitää olla välillä aikaa, puolusteli Samuli.

— No onhan tässä ollut aikaa, eikä iankaikkisuutta, tenäsi Pekka.


Vai luuletko sinä tulevasi toisen kerran tänne maailmaan ja sitten
vasta otat uuden ryypyn.

Samuli jäi sanattomaksi. Todellakin hän oli ajatellut ajan


määräämistä kovin ahtaasti. Eihän siihen tarvinnut päiviä. Ottihan
isäkin jo toisessa talossa, vaikkei talon väliä kulkiessaan olisi
viipynytkään kovin monta minuuttia. Mutta kuluuhan aika
kävelemättäkin, niin ettei siinä tule mitään virhettä, jos joskus ottaa
lyhemmänkin väliajan perästä. Isän sääntöjen pääpykälähän onkin
se, ettei jalat horjahtele ja että pää pysyy selvänä. Samulia hiukan
harmitti, ettei ennen huomannut tätä, vaan on tuon toisen, paljoa
vähäisemmän säännön tähden kinastellut vuosikausia tuttaviensa
kanssa. Nyt hän seuraa tätä toista tärkeämpää pykälää, pitää päänsä
mittarinaan ja välittää vähät ajan kulusta. Sen hän kumminkin pitää
niin varmasti, ettei isä eikä kukaan kykene sanomaan sanallakaan.

Samuli pääsi kuin pahasta painajaisesta. Nyt hän vasta tunsi ensi
kerran nauttivansa toverien seurasta. Ei tarvinnut muistella milloin
on ottanut. Joskus vaan toisten huomaamatta pudisti päätään, että
voi olla varma sen selvyydestä. Ja selvä se oli, kun hän viimein erosi
ystävistäänkin ja alkoi astua kotiinsa. Hän käveli yhtä jalaksen jälkeä
ja melkein hoipertelematta pysyivät jalat samassa suunnassa. Eikä
siinä liukkaassa jalaksen uurnassa pysy kenenkään jalka aivan
horjahtelematta. Mutta jos tie olisi yhtä suora ja kova kuin tuvan
lattia, niin varmaan pysyisi. Samuli oli siitä asiasta aivan varma. Hän
oli niin varma, ettei siitä tarvitse kenenkään epäillä. Ja hän näyttää
sen todeksi jokaiselle. Hän ei välittänyt enää kulkea jalaksen jälkeä,
astuipahan mihin astui, mutta tuvassa hän sen näyttää.

Kun Samuli joutui kotinsa tupaan, seurasi hän tiellä tekemäänsä


päätöstä, alkoi heti kävellä tuiki vakavana yhtä sillan rakoa myöten ja
puheli lakkaamatta:
— … ja minä uskallan näyttää sen vaikka kelle, että minun jalkani
ei horjahtele. Tällä lailla ei kävele se, jonka pää ei ole aivan selvä…
mutta minä saatan tätä tehdä vaikka päiväkaudet… Yks, kaks… näin
minä marssin kuin sotamiehet ja jalan pitää sattua mihin minä vain
tahdon… Ja jos kirjoitatte numeroita peräkkäin, niin minä lasken
yhteen. Saatte kirjoittaa vaikka taulun täyteen, niin minä lasken, ja
summa pitää tulla oikein. Mutta jos ette usko, niin koettakaa… Vai
luuletteko ettei summa satu paikalleen… Sen pitää sattua, sillä
minun ajatukseni juoksu ei ole ollut milloinkaan tämän selvempi…

Vanha Partanen istui jotenkin myrtyneen näköisenä nurkassa ja


katseli äänetönnä poikansa kävelynäytteitä. Mutta vaikka hän näki,
että poika astuu aivan hänen määräystensä mukaan,
horjahtelematta, niin sittenkin… niin sittenkin… ja vielä sittenkin… on
hänen oma esikoisensa ja ylpeytensä melkeinpä sikahumalassa.

Tätä seikkaa ei vanha Partanen enää oikein ymmärtänyt.


YRJÖ SARKANEN.

(Haudankaivajan juttu.)

— Kysytte, onko täällä koskaan kummitellut, virkkoi haudankaivaja


Kaaperi istahtaen helteisenä heinäkuun päivänä nurmittuneen
hautakummun laiteelle, vastapäätä muutamia nuoria miehiä, jotka
ohi kulkiessaan olivat poikenneet hautausmaata katselemaan ja
pysähtyivät nyt leikkisäksi tunnettua "viimeistä virkamiestä"
puhuttelemaan.

— On täällä kummitellut, vakuutti hän uudestaan — toissa iltana


viimeksi. Haluatteko kuulla sen jutun?

— Halutaan toki, vastasivat nuoret miehet yhteen ääneen.

— Mutta teillä täytyy olla aikaa. Se ei ole aivan lyhyt. Se alkaa


kymmenien vuosien takaa.

— Vaikkapa alkaakin, kunhan päivässäkään tulee kerrotuksi.

— Sillä puheella… Te ette tiedä mitään Sarkamäen Yrjöstä, jolla


minä 30 vuotta takaperin palvelin renkinä. Se oli rehti isäntä, joka
piti hyvän ruuan työväelleen, eikä palkkaa maksaessa kuulunut
kitinätä. Mutta sille piti tehdä työtä kummallakin kädellä. Ja
mielellään sille tekikin, sillä hän itse teki enemmän kuin yksikään
muu työmies, eikä kumminkaan koskaan kehunut eikä
heikompivoimaisia halveksinut. Hän oli oikea työhullu, jolle työttömät
ajat olivat ikävimmät. Heinäkuun iltoina auringon laskun aikana ja
sunnuntaipäivinä hän joskus leikillään (mutta varmasti, puoliksi
tosissaan) virkkoi, että muuten on luoja luonut kaikki hyvästi, vaan
loi yöt ja pyhäpäivät. Ei se sitä sanonut pyhäpäiviä halveksiessaan.
Yrjö kävi kirkossa useammin kuin muut, jotka hyvin kokolla koprin
pyhäpäivää odottavat. Mutta iltapuoli siitä jo oli ikävä viettää
joutilaana ja usein hän meni työpaikkoja katselemaan.

Yrjö luuli olevansa rautaa, joka kestää ainaisesti. Siinä hän


kumminkin erehtyi. Hän olisi alkanut tarvita ruoka-unetkin, mutta
sellaiseen ajan tuhlaukseen hän ei antautunut, vaan rupesi illan
suussa hiipivää väsymystä karkoittamaan kotikorvessa keitetyllä
"vanhalla miehellä". Sitä oli nyt aina povitaskussa litteässä pullossa
ja siitä hän kävi salavihkaa pajukon tai ladon suojassa
kulauttamassa. Kulauksen päälle hän kohautti olkapäitään, ja silloin
sai arvata, että nyt ei taas pysy poikaset perässä olipa tehtävänä
mikä työ tahansa.

Sitä tekoa kului vuosi, ehkäpä toistakin. Litteän pullon sisällys ei


enää riittänyt rupeamaksi. Täytyi käydä keskelläkin täyttämässä.
Varasto hupeni sitä mukaa, mutta silloin meni Yrjö aittaan, mittasi
rukiita säkkiin ja vei hevosella Kotakorven mökkiin, jonka vaimo,
vanha viinankeittäjä, valmisti rukiista jäsenten jännittäjää. Sellainen
valmistustapa oli jo kiellettyä, mutta Yrjö ei katsonut millään tavalla
lakia rikkovansa, kun ei keitättänyt kellekään myötäväksi, ainoastaan
omaksi tarpeekseen. Mökin mies, sorakielinen ukko, kantoi
valmistuneen aineen suurella leilillä Sarkamäelle. Leili oli ulkopuolelta
tervattu ja jos vastaantulija sattui kysymään, mitä leilissä on, vastasi
ukko: tervaa. Ettei ruunun miehet eivätkä muutkaan pahansuovat
pääsisi heidän hommistaan tietämään, käyttivät he samaa nimitystä
keskenäänkin puhellessaan, ja minä kuulin kerrankin mökin ukon
kysyvän: "Yrjö, onko sitä vielä sitä tervaa?"

En muista mitä Yrjö siihen vastasi, mutta sen huomasi


syrjäinenkin, että tervan maussa se oli aina. Työtä se oli vieläkin
tekevinään, vaikka se supistui siihen, että tuli työpaikalle, tarttui
aseeseen, nujerti sillä muutaman minuutin ajan ja lähti sitten astua
junnaroimaan pihaan ottamaan lisävoimia. Potattia nostettaessa kävi
viimeksi pellolla. Tonkasi yhden kerran taikollakin, mutta siihen se
työnteko loppui.

Pois pani taikon ja lähtiessään örähti: tarkkaan. Tarkoitus oli kai


varoittaa, että pitää ottaa tarkkaan kaikki potatit. Yrittelipä pois
mennessään entiseen tapaan jalallaan potkia multaa, nähdäkseen
oliko huonosti harattu, mutta eipä jalka totellutkaan enää. Ne
tarvitsivat olla tanakasti maassa kiinni ja ainoastaan arvelun perästä
uskalsi toksautella toista toisen edelle. "Vanhaa miestäkään" ei
kyennyt enää laskemaan pienempään astiaan, vaan täytyi kulautella
suuren lekkerin suulta.

Sen kupeella hän istuksikin enimmät ajat ja ennenkuin potatit


olivat kuopassa, tuli Yrjö niin läpeensä tervatuksi, että jäikin siihen
aitan lattialle selälleen köllöttämään.

Emäntä oli ensimäiseksi huomannut ja kutsui kaikkia muitakin


katsomaan. Siinä sitä katseltiin ja käänneltiin, ja päätökseksi tuli,
että kuollut mikä kuollut. Kotakorven mökin vaimo haettiin
pesemään. Muori, joka oli tähän asti pitänyt huolen sisäpuolen
huuhteluveden keittelemisestä, pesi nyt viimeksi kotiliedellä
lämmitetyllä vedellä ulkopuolenkin ja puki sitten päälle puhtaan,
vasta neulalta heitetyn liinapaidan ja samoin tanakasta
toimikkaisesta ommellut uudet housut. Sellaisena sitten asetettiin
Yrjö laudalle, jonka toinen pää oli jyvähinkalon laidalla ja toinen
vanhan viinatynnyrin päällä. Hautajaisten valmistusaikana kävivät
naapurit pitkälle matkalle lähtenyttä katsomassa ja hyvittelivät
surevia sukulaisia sillä, että on aivan yhtä punakka kuin
eläessäänkin.

Hautajaisissa syötiin ja juotiin kaksi päivää. Siinä välissä käytiin


Yrjö tuomassa tänne "pitkän pellon piertanolle". Kun minä sitten
kymmenien vuosien kuluttua pääsin tämän pellon käsin kyntäjäksi,
niin tulin usein pysähtyneeksi entisen isäntäni hautakummun viereen
ja muistui mieleeni, että vieläköhän lienet yhtä punakka kuin
ennenkin. Toissa iltana minä sitten sain sen tietää, josta alkaa
kertomukseni toinen osa.

*****

Yrjön emäntä eli vanhaksi. Muutamia päiviä takaperin tuotiin sana,


että nyt on hänkin kuollut ja minun pitää valmistaa hänelle
lepopaikka. Siinäpä ei ollut aprikoimista mihin tuon valmistaisi:
tietysti miehensä viereen. Kun tiesin kymmenissä vuosissa mullan
kerinneen painua vieremättömän lujaksi, uskalsin ruveta uutta
hautaa kaivamaan aivan entiseen kiinni. Se sattuikin niin tarkalle,
että pohjalle tultua hipasi lapio Yrjön arkun kuvetta. Kiitollisuudesta
entistä emäntääni kohtaan, joka oli kymmeniä kertoja ojentanut
renkipojalle vahvan voipalasen keskellä rupeamaakin, kaivoin hänen
hautansa ainakin puolen kyynärää syvemmäksi kuin Yrjön hauta.
Viimeisen multalapion viskattua nojasin selkäni haudan seinustaan,
levähtääkseni. Silloin löyhähti nenääni renkiys-ajoilta tuttu "vanhan
miehen" haju.

Muistojen uudistuessa tulin vähän vallattomalle päälle ja matkien


mökin ukon ääntä, samalla kopauttaen arkun laitaan lapiollani,
kysyin: "Yrjö, onko sitä vielä sitä tervaa?" Lienen kopauttanut liika
kovasti, sillä arkun laita loheta hösähti aivan avonaiseksi. Tuosta jo
vähän kammahdin ja aloin kiivetä ylös. Mutta en ennättänyt vielä
seisaalleni, kun kuulin tutun äänen: uh, uh, ja kun käännyin
katsomaan, niin näin, että Yrjö oli vyöräyttänyt itsensä uuden
haudan pohjalle ja kömpi parhaallaan seisaalleen. Arvaatte sen, että
minä ihmettelin. Aloin kumminkin ymmärtää, ettei tämä ollut mikään
kuolleista herääminen, olipahan vain pitkänpuoleinen pohmelolepo.
Eihän se kuolleena olisi niin punakka ollutkaan, kun silloin arkkuun
pantaessa oli. Nyt se heräsi siitä pohmelostaan ja minä odottelin,
että kääntyyköhän tuon kieli paremmin kuin silloin potattimaalla.

Jo rykäsi muutamia kertoja, sitten kohotti päätänsä ja kysyi:


"Missä minä olen?" Minä vastasin: "Haudassa." "Haudassa", jamasi
Yrjö. "Sinäkö minut tänne toit?" "Oli niitä tuomassa muitakin",
vastasin minä. "Muitakin", virkkoi taas Yrjö ja kysyi: "Kuka sinä olet?"
"Kaaperi minä olen", vastasin. "Meidän Kaaperiko? Et ikinä. Sinähän
näytät vanhalta ukolta." Selitin, että vanha minä olenkin, sillä siitä
taitaa olla yli kolmekymmentä vuotta, kun viimeksi tavattiin. Yrjö
yritti suuttua ja väitti aivan vasta tavanneensa Kaaperia
potattipellolla. Sanoi minun luulevan häntä juopuneeksi, mutta että
hän on nyt selvempi kuin pitkiin aikoihin. Kuoppaa väitti
potattikuopan tekeleeksi, johon hän on voinut kävellessään pudota
ja nukkua siellä pitkän rupeaman. "Ei väitellä tyhjän tautta", sanoin
minä. "Nouse tarkastelemaan, ollaanko nyt Sarkamäen kuoppa-
harjulla."
Laskin portaat haudan pohjaan, ja Yrjö kiipesi ylös
toimikashousuissaan. Olivatpa ne säilyneet lahoamatta, kun olivat
lähellä hyväksi karaistua ihoa. Kestipä meidän kotvan aikaa
keskustella, ennenkuin Yrjö uskoi mitenkä asiat ovat. Sitten se
ajatteli vähän aikaa ja virkkoi: "Kyllä minä mahdan olla joutava,
mutta mennäänhän kumminkin katsomaan miten siellä Sarkamäessä
nyt eletään." "Aivan oikein", myönnytin minä. "Ja onhan siellä
emännän hautajaiset. Käskettiin sinne minuakin hautajaisiin."

Sitten me lähdettiin yötä myöten yhdessä astua teilaamaan. Ennen


matkalle lähtemistä arvelin Yrjölle, että jos täältä kirkonkylän
telefooni-asemalta ilmoitettaisiin tulostamme Sarkamäelle, etteivät
hämmästyisi ja että tulisivat hevosella vastaan.

"Ilmoitettaisiin Sarkamäelle", ihmetteli Yrjö ja sanoi minun


höpisevän, kun aion ilmoittaa kahden peninkulman päähän. Minä
selitin, ettei se ole höpisemistä. Yksi noihin pylväisiin kiinnitettyjä
lankoja menee Sarkamäellekin ja kun langan päähän sanoo, niin se
kuuluu yhtä selvästi toiseen päähän kuin meidän puhelu tässä. Yrjö
katseli puhelinlankoja ja virkkoi: "Jos tuo on totta, niin ihmeitähän
täällä on opittuna sinä aikana." En ennättänyt vastata mitään, kun
Yrjö keksi uuden ihmeen ja loikaten ojan toiselle puolelle kysyi:
"Tuleeko tuolta kummitus?" "Ei se ole kummitus eikä se tule päälle",
selitin minä. "Kauppiaan poika näkyy ajelevan polkupyörällä." Yrjö
katseli pitkään polkupyöräilijän jälkeen ja virkkoi: "Joka
kummemmalla hevosella ajaa, niin sanokoon."

Tuskin oli ennätetty virstan verran kävellä, kun tien mutkasta


ilmestyi tehtailijan automobiili. "Mennään syrjään", ennätin sanoa,
kun Yrjö ryntäsi metsään, että oksat ruskivat. Minä huutelemaan
jälkeen, ettei täällä ole mitään hätää, se jo meni. Silmät pyöreinä
pelosta hiipi Yrjö metsästä ja kysyi: "Ihmisten laitoksiako se oli
tuokin?" Koetin selittää, että se on vain tulen voimalla kulkeva kärri.
Yrjö ei väittänyt vastaankaan, sanoi vaan luulleensa pääpaholaiseksi,
kun oli niin punanen ja suhisi kuin käärme. Sitten hän kysyi tokko
täällä onkaan enää hevosia. Minä selitin, että on ne hevoset vielä
ennallaan, vaikkei niiden nyt tarvitse vetää rahtikuormia, kun tavarat
kuljetetaan rautatietä myöten. Yrjö ei ymmärtänyt mikä on rautatie.
Muisteli ennen aikaan Sarkamäellä ollessaan kuulleensa jotain
rautatiestä, mutta arveli, että se mahtaa olla vielä hirveämpi
kummitus kuin se äskeinen sähisijä. "Vielä se Sarkamäkeen
mennessä nähdään sekin", sanoin. Yrjö rupesi ehtimiseen pälymään
taakseen, ja kun kysyin mitä hän sieltä katsoo, niin sanoi
pelkäävänsä, että jos se rautatie ryntää takaapäin päälle.

"Sillä on aivan erityinen oma tiensä, jossa ei ole mäkiä eikä


tiukkoja mutkia", rauhottelin minä. "Me saadaan astua aivan
pelkäämättä." "Oma tiensä, jossa ei ole mäkiäkään", ihmetteli Yrjö ja
kysyi, että millä voimalla ne mäet tasoitetaan. Hän ei ottanut
uskoakseen, että se tapahtuisi ihmisvoimilla. Kun sitten jouduttiin
kulkemaan rautatieaseman kautta ja katseltiin kaikkia vehkeitä, niin
ei Yrjö sanonut enää ihmettelevänsä vaikka näkisi mitä. Kun vielä
matkan varrella katseltiin suurta meijeriä, puimakonetta ja
tuulimoottoria, joka nostaa veden järvestä, niin Yrjö aivan innostui ja
sanoi, että jopa täällä nyt sopii elää. Ihmisten ei tarvitse enää muuta
kuin kyntää ja niittää. Minä kerroin, ettei enää tarvitse niittääkään
eikä haravoida, ne työt toimitetaan hevosella. "Jopa ovat hevosetkin
tulleet viisaiksi!" huudahti Yrjö. "Ennen ei tahtonut heinä katketa
tyhmältä mieheltäkään ja nyt sitä osaavat tehdä hevosetkin. Missä
täällä näkisi hevosen niittävän ja haravoivan?" Sanoin, että jos ei
tänä yönä satuta näkemään niittämässä ja haravoimassa, niin
ainakin työaseet nähdään. Kun siihen satuin lisäämään, että ne
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookultra.com

You might also like