100% found this document useful (12 votes)
45 views

Download full (Ebook) Getting Started with p5.js: Making Interactive Graphics in JavaScript and Processing by Lauren McCarthy, Casey Reas, Ben Fry ISBN 9781457186776, 1457186772 ebook all chapters

The document is a promotional material for the ebook 'Getting Started with p5.js: Making Interactive Graphics in JavaScript and Processing' by Lauren McCarthy, Casey Reas, and Ben Fry. It provides an overview of the book's content, which includes learning programming basics, creating interactive graphics, and applying data visualization techniques using p5.js. The ebook is available for download in various formats and is aimed at artists, designers, educators, and beginners interested in coding and graphics.

Uploaded by

ladukagebrek
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (12 votes)
45 views

Download full (Ebook) Getting Started with p5.js: Making Interactive Graphics in JavaScript and Processing by Lauren McCarthy, Casey Reas, Ben Fry ISBN 9781457186776, 1457186772 ebook all chapters

The document is a promotional material for the ebook 'Getting Started with p5.js: Making Interactive Graphics in JavaScript and Processing' by Lauren McCarthy, Casey Reas, and Ben Fry. It provides an overview of the book's content, which includes learning programming basics, creating interactive graphics, and applying data visualization techniques using p5.js. The ebook is available for download in various formats and is aimed at artists, designers, educators, and beginners interested in coding and graphics.

Uploaded by

ladukagebrek
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 67

Download Full Version ebook - Visit ebooknice.

com

(Ebook) Getting Started with p5.js: Making


Interactive Graphics in JavaScript and Processing
by Lauren McCarthy, Casey Reas, Ben Fry ISBN
9781457186776, 1457186772
https://ebooknice.com/product/getting-started-with-p5-js-
making-interactive-graphics-in-javascript-and-
processing-5330268

Click the button below to download

DOWLOAD EBOOK

Discover More Ebook - Explore Now at ebooknice.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

(Ebook) Make: Getting Started with Processing: A Hands-On


Introduction to Making Interactive Graphics by Casey Reas,
Ben Fry ISBN 9781457187087, 1457187086
https://ebooknice.com/product/make-getting-started-with-processing-a-
hands-on-introduction-to-making-interactive-graphics-5209624

ebooknice.com

(Ebook) Getting Started with Processing by Casey Reas, Ben


Fry ISBN 9781449379803, 144937980X

https://ebooknice.com/product/getting-started-with-processing-1471152

ebooknice.com

(Ebook) Make: Getting Started with Processing by Fry,


Ben;Reas, Casey ISBN 9781457187087, 1457187086

https://ebooknice.com/product/make-getting-started-with-
processing-11403918

ebooknice.com

(Ebook) Make Getting Started with Processing.py by Allison


Parrish, Ben Fry, Casey Reas ISBN 9781457186837,
1457186837
https://ebooknice.com/product/make-getting-started-with-processing-
py-5659284

ebooknice.com
(Ebook) Biota Grow 2C gather 2C cook by Loucas, Jason;
Viles, James ISBN 9781459699816, 9781743365571,
9781925268492, 1459699815, 1743365578, 1925268497
https://ebooknice.com/product/biota-grow-2c-gather-2c-cook-6661374

ebooknice.com

(Ebook) Processing: A Programming Handbook for Visual


Designers and Artists by Casey Reas, Ben Fry ISBN
9780262028288, 026202828X
https://ebooknice.com/product/processing-a-programming-handbook-for-
visual-designers-and-artists-5226646

ebooknice.com

(Ebook) Matematik 5000+ Kurs 2c Lärobok by Lena


Alfredsson, Hans Heikne, Sanna Bodemyr ISBN 9789127456600,
9127456609
https://ebooknice.com/product/matematik-5000-kurs-2c-larobok-23848312

ebooknice.com

(Ebook) SAT II Success MATH 1C and 2C 2002 (Peterson's SAT


II Success) by Peterson's ISBN 9780768906677, 0768906679

https://ebooknice.com/product/sat-ii-success-
math-1c-and-2c-2002-peterson-s-sat-ii-success-1722018

ebooknice.com

(Ebook) Learn JavaScript with p5.js: Coding for Visual


Learners by Engin Arslan ISBN 9781484234266, 148423426X

https://ebooknice.com/product/learn-javascript-with-p5-js-coding-for-
visual-learners-52953782

ebooknice.com
Computers / Digital Media

Make: Getting Started with p5.js

Make:
Learn programming the fun way—by sketching with interactive computer
graphics! Getting Started with p5.js contains techniques that can be
applied to creating games, animations, and interfaces.
p5.js is a new interpretation of Processing written in JavaScript that
makes it easy to interact with HTML5 objects, including text, input, video,

Getting
webcam, and sound. Like its older sibling Processing, p5.js makes coding
accessible for artists, designers, educators, and beginners.
Written by the lead p5.js developer and the founders of Processing, this
book provides an introduction to the creative possibilities of today’s Web,
Started with

Getting Started with p5.js


using JavaScript and HTML.

p5.js
With Getting Started with p5.js, you’ll:

» Quickly learn programming basics, from variables to objects


» Understand the fundamentals of computer graphics
» Create interactive graphics with easy-to-follow projects
» Learn to apply data visualization techniques
» Capture and manipulate webcam audio and video feeds in the browser
With p5.js, you can think of your entire Web browser
as your canvas for sketching with code!
Lauren McCarthy is an artist and a full-time faculty member at NYU
Interactive Telecommunications Program. She was a resident at Eyebeam and
the Frank-Ratchye STUDIO for Creative Inquiry at Carnegie Mellon University.
She leads the development of p5.js.
Casey Reas is a professor at UCLA’s Department of Design Media Arts. His
software, prints, and installations have been featured in numerous exhibitions

McCarthy, Reas & Fry


at museums and galleries around the world. He cofounded Processing with
Ben Fry in 2001.
Ben Fry is the principal of Fathom, a Boston-based design and software
consultancy. In 2001, he cofounded Processing with Casey Reas while earning Making Interactive Graphics in
his PhD from MIT’s Aesthetics + Computation Group, where he focused on
understanding information through data visualization by combining computer JavaScript and Processing
science, statistics, and graphic design.
US $19.99 CAN $22.99
ISBN: 978-1-4571-8677-6
Lauren McCarthy,
Casey Reas & Ben Fry
Make:
makezine.com
Computers / Digital Media

Make: Getting Started with p5.js

Make:
Learn programming the fun way—by sketching with interactive computer
graphics! Getting Started with p5.js contains techniques that can be
applied to creating games, animations, and interfaces.
p5.js is a new interpretation of Processing written in JavaScript that
makes it easy to interact with HTML5 objects, including text, input, video,

Getting
webcam, and sound. Like its older sibling Processing, p5.js makes coding
accessible for artists, designers, educators, and beginners.
Written by the lead p5.js developer and the founders of Processing, this
book provides an introduction to the creative possibilities of today’s Web,
Started with

Getting Started with p5.js


using JavaScript and HTML.

p5.js
With Getting Started with p5.js, you’ll:

» Quickly learn programming basics, from variables to objects


» Understand the fundamentals of computer graphics
» Create interactive graphics with easy-to-follow projects
» Learn to apply data visualization techniques
» Capture and manipulate webcam audio and video feeds in the browser
With p5.js, you can think of your entire Web browser
as your canvas for sketching with code!
Lauren McCarthy is an artist and a full-time faculty member at NYU
Interactive Telecommunications Program. She was a resident at Eyebeam and
the Frank-Ratchye STUDIO for Creative Inquiry at Carnegie Mellon University.
She leads the development of p5.js.
Casey Reas is a professor at UCLA’s Department of Design Media Arts. His
software, prints, and installations have been featured in numerous exhibitions

McCarthy, Reas & Fry


at museums and galleries around the world. He cofounded Processing with
Ben Fry in 2001.
Ben Fry is the principal of Fathom, a Boston-based design and software
consultancy. In 2001, he cofounded Processing with Casey Reas while earning Making Interactive Graphics in
his PhD from MIT’s Aesthetics + Computation Group, where he focused on
understanding information through data visualization by combining computer JavaScript and Processing
science, statistics, and graphic design.
US $19.99 CAN $22.99
ISBN: 978-1-4571-8677-6
Lauren McCarthy,
Casey Reas & Ben Fry
Make:
makezine.com
Getting
Started
with p5.js
Lauren McCarthy, Casey Reas,
and Ben Fry
Make: Getting Started with p5.js
by Lauren McCarthy, Casey Reas, and Ben Fry
Copyright © 2016 Maker Media. All rights reserved.
Printed in the United States of America.
Published by Maker Media, Inc., 1160 Battery Street East, Suite 125, San Francisco,
CA 94111.
Maker Media books may be purchased for educational, business, or sales promo-
tional use. Online editions are also available for most titles (http://safaribookson-
line.com). For more information, contact our corporate/institutional sales depart-
ment: 800-998-9938 or [email protected].

Editor: Anna Kaziunas France Interior Designer: David Futato


Production Editor: Kristen Brown Cover Designer: Karen Montgomery
Copyeditor: Jasmine Kwityn Illustrators: Taeyoon Choi and Rebecca
Proofreader: Kim Cofer Demarest
Indexer: Wendy Catalano

October 2015: First Edition

Revision History for the First Edition

2015-09-25: First Release

See http://oreilly.com/catalog/errata.csp?isbn=9781457186776 for release details.


The Make logo and Maker Media logo are registered trademarks of Maker Media, Inc.
Make: Getting Started with p5.js, the cover image, and related trade dress are trade-
marks of Maker Media, Inc.
While the publisher and the authors have used good faith efforts to ensure that the
information and instructions contained in this work are accurate, the publisher and
the authors disclaim all responsibility for errors or omissions, including without limi-
tation responsibility for damages resulting from the use of or reliance on this work.
Use of the information and instructions contained in this work is at your own risk. If
any code samples or other technology this work contains or describes is subject to
open source licenses or the intellectual property rights of others, it is your responsi-
bility to ensure that your use thereof complies with such licenses and/or rights.

978-1-457-18677-6
[LSI]
Contents

Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

1/Hello. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Sketching and Prototyping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Flexibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Giants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Family Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Join In. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2/Starting to Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Download and File Setup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Your First Program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Example 2-1: Draw an Ellipse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Example 2-2: Make Circles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
The Console. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Making a New Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Examples and Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3/Draw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
The Canvas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Example 3-1: Create a Canvas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Example 3-2: Draw a Point. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Basic Shapes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Example 3-3: Draw a Line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Example 3-4: Draw Basic Shapes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Example 3-5: Draw a Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Example 3-6: Draw an Ellipse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Example 3-7: Draw Part of an Ellipse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Example 3-8: Draw with Degrees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Example 3-9: Use angleMode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Drawing Order. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Example 3-10: Control Your Drawing Order. . . . . . . . . . . . . . . . . . . . . . . . 26

iii
Example 3-11: Put It in Reverse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Shape Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Example 3-12: Set Stroke Weight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Example 3-13: Set Stroke Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Color. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Example 3-14: Paint with Grays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Example 3-15: Control Fill and Stroke. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Example 3-16: Draw with Color. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Example 3-17: Set Transparency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Custom Shapes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Example 3-18: Draw an Arrow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Example 3-19: Close the Gap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Example 3-20: Create Some Creatures. . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Robot 1: Draw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4/Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
First Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Example 4-1: Reuse the Same Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Example 4-2: Change Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Making Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
p5.js Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Example 4-3: Adjust the Canvas, See What Follows. . . . . . . . . . . . . . . . . . 44
A Little Math. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Example 4-4: Basic Arithmetic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Repetition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Example 4-5: Do the Same Thing Over and Over. . . . . . . . . . . . . . . . . . . . 47
Example 4-6: Use a for Loop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Example 4-7: Flex Your for Loop’s Muscles. . . . . . . . . . . . . . . . . . . . . . . . . 49
Example 4-8: Fanning Out the Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Example 4-9: Kinking the Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Example 4-10: Embed One for Loop in Another. . . . . . . . . . . . . . . . . . . . . 51
Example 4-11: Rows and Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Example 4-12: Pins and Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Example 4-13: Halftone Dots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Robot 2: Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5/Response. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Once and Forever. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Example 5-1: The draw() Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Example 5-2: The setup() Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Example 5-3: setup(), Meet draw(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

iv Contents
Follow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Example 5-4: Track the Mouse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Example 5-5: The Dot Follows You. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Example 5-6: Draw Continuously. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Example 5-7: Set Thickness on the Fly. . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Example 5-8: Easing Does It. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Example 5-9: Smooth Lines with Easing. . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Click. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Example 5-10: Click the Mouse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Example 5-11: Detect When Not Clicked. . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Example 5-12: Multiple Mouse Buttons. . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Location. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Example 5-13: Find the Cursor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Example 5-14: The Bounds of a Circle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Example 5-15: The Bounds of a Rectangle. . . . . . . . . . . . . . . . . . . . . . . . . 75
Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Example 5-16: Tap a Key. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Example 5-17: Draw Some Letters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Example 5-18: Check for Specific Keys. . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Example 5-19: Move with Arrow Keys. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Touch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Example 5-20: Touch the Screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Example 5-21: Track the Finger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Example 5-22: Map Values to a Range. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Example 5-23: Map with the map() Function. . . . . . . . . . . . . . . . . . . . . . . . 83
Robot 3: Response. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

6/Translate, Rotate, Scale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89


Translate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Example 6-1: Translating Location. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Example 6-2: Multiple Translations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Rotate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Example 6-3: Corner Rotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Example 6-4: Center Rotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Example 6-5: Translation, Then Rotation. . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Example 6-6: Rotation, Then Translation. . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Example 6-7: An Articulating Arm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Scale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Example 6-8: Scaling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Example 6-9: Keeping Strokes Consistent. . . . . . . . . . . . . . . . . . . . . . . . . . 97
Push and Pop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

Contents v
Example 6-10: Isolating Transformations. . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Robot 4: Translate, Rotate, Scale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

7/Media. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Example 7-1: Load an Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Example 7-2: Load More Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Example 7-3: Mousing Around with Images. . . . . . . . . . . . . . . . . . . . . . . . 106
Example 7-4: Transparency with a GIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Example 7-5: Transparency with a PNG. . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Example 7-6: Displaying an SVG Image. . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Asynchronicity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Example 7-7: Demonstrating Asynchronicity. . . . . . . . . . . . . . . . . . . . . . . 110
Example 7-8: Loading with a Callback. . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Fonts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Example 7-9: Drawing with Fonts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Example 7-10: Use a Webfont. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Example 7-11: Load a Custom Font. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Example 7-12: Set the Text Stroke and Fill. . . . . . . . . . . . . . . . . . . . . . . . 115
Example 7-13: Draw Text in a Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Example 7-13: Store Text in a Variable. . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Robot 5: Media. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

8/Motion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Frames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Example 8-1: See the Frame Rate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Example 8-2: Set the Frame Rate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Speed and Direction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Example 8-3: Move a Shape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Example 8-4: Wrap Around. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Example 8-5: Bounce Off the Wall. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Tweening. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Example 8-6: Calculate Tween Positions. . . . . . . . . . . . . . . . . . . . . . . . . . 126
Random. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Example 8-7: Generate Random Values. . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Example 8-8: Draw Randomly. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Example 8-9: Move Shapes Randomly. . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Timers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Example 8-10: Time Passes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Example 8-11: Triggering Timed Events. . . . . . . . . . . . . . . . . . . . . . . . . . 130
Circular. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Example 8-12: Sine Wave Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

vi Contents
Example 8-13: Sine Wave Movement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Example 8-14: Circular Motion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Example 8-15: Spirals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Robot 6: Motion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

9/Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Function Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Example 9-1: Roll the Dice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Example 9-2: Another Way to Roll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Make a Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Example 9-3: Draw the Owl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Example 9-4: Two’s Company. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Example 9-5: An Owl Function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Example 9-6: Increasing the Surplus Population. . . . . . . . . . . . . . . . . . . . 146
Example 9-7: Owls of Different Sizes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Return Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Example 9-8: Return a Value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Robot 7: Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

10/Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Properties and Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Define a Constructor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Create Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Example 10-1: Make an Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Example 10-2: Make Multiple Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Robot 8: Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

11/Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
From Variables to Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Example 11-1: Many Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Example 11-2: Too Many Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Example 11-3: Arrays, Not Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Make an Array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Example 11-4: Declare and Assign an Array. . . . . . . . . . . . . . . . . . . . . . . 169
Example 11-5: Assigning to an Array in One Go. . . . . . . . . . . . . . . . . . . . 170
Example 11-6: Revisiting the First Example. . . . . . . . . . . . . . . . . . . . . . . . 170
Repetition and Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Example 11-7: Filling an Array in a for Loop. . . . . . . . . . . . . . . . . . . . . . . 171
Example 11-8: Track Mouse Movements. . . . . . . . . . . . . . . . . . . . . . . . . . 172
Arrays of Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Example 11-9: Managing Many Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Example 11-10: Sequences of Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

Contents vii
Robot 9: Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

12/Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Data Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Example 12-1: Read the Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Example 12-2: Draw the Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Example 12-3: 29,740 Cities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Example 12-4: Read a JSON File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Example 12-5: Visualize Data from a JSON File. . . . . . . . . . . . . . . . . . . . 189
Network Data and APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Example 12-6: Parsing the Weather Data. . . . . . . . . . . . . . . . . . . . . . . . . 194
Example 12-7: Chaining Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Robot 10: Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

13/Extend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
p5.sound. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Example 13-1: Play a Sample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Example 13-2: Listen to a Mic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Example 13-3: Create a Sine Wave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
p5.dom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Example 13-4: Access the Webcam. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Example 13-5: Create a Slider. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Example 13-6: Create an Input Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

A/Coding Tips. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

B/Order of Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

C/Variable Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

viii Contents
Visit https://ebooknice.com to
discover a wide range of
eBooks across various genres.
Enjoy exclusive deals and
discounts to enhance your
reading experience. Start your
digital reading journey today!
Preface

p5.js draws inspiration and guidance


from another project, which began nearly
15 years ago. In 2001, Casey Reas and
Ben Fry began work on a new platform to
make programming interactive graphics
easier; they called it Processing. They
were frustrated with how difficult it was to
write this type of software with the pro-
gramming languages they usually used
(C++ and Java), and were inspired by
how simple it was to write interesting pro-
grams with the languages of their child-
hood (Logo and BASIC). They were most
influenced by Design By Numbers (DBN),
a language they were maintaining and
teaching at the time (and which was cre-
ated by their research advisor, John
Maeda).
With Processing, Ben and Casey were searching for a better way
to test their ideas easily in code, rather than just talking about
them or spending too much time programming them in C++.
Their other goal was to make a language for teaching design and
art students how to program and to give more technical stu-
dents an easier way to work with graphics. The combination is a
positive departure from the way programming is usually taught.

xi
New users begin by focusing on graphics and interaction rather
than on data structures and text console output.
Over the years, Processing has grown into a huge community. It
is used in classrooms worldwide, in arts, humanities, and com-
puter science curricula, as well as by professionals.
Two years ago, Ben and Casey approached me with a question:
what would Processing look like if it were on the Web? p5.js
starts with the original goal of Processing, to make coding
accessible for artists, designers, educators, and beginners, then
reinterprets it for today’s Web using JavaScript and HTML.
Developing p5.js has felt like bringing different worlds together.
To ease the transition to the Web for the existing community of
Processing users, we adhered to the syntax and conventions of
Processing as much as possible. However, p5.js is built with
JavaScript, while Processing is built with a language called Java.
These two languages have different patterns and affordances,
so at times we had to deviate from familiar Processing syntax. It
was also important that p5.js integrated seamlessly into all the
existing web features, tools, and frameworks in order to draw in
users that might be familiar with the Web but new to creative
coding. Synthesizing all of these factors was a challenge, but the
goal of uniting these frameworks provided a clear path for the
development of p5.js.
A first beta version was launched in August 2014. Since then, it
has been used and integrated into curricula around the world.
There is an official p5.js Editor currently in development, and
progress is underway on many new features and libraries.
p5.js is a community effort—hundreds of people have contrib-
uted core features, bug fixes, examples, documentation, design,
thoughts, and discussion. We aim to carry on the vision and the
spirit of the Processing community as we open it up even more
on the Web.

xii Preface
How This Book Is Organized
The chapters in this book are organized as follows:

• 1/Hello: Learn about p5.js.


• 2/Starting to Code: Create your first p5.js program.
• 3/Draw: Define and draw simple shapes.
• 4/Variables: Store, modify, and reuse data.
• 5/Response: Control and influence programs with the
mouse, keyboard, and touch.
• 6/Translate, Rotate, Scale: Transform the coordinates.
• 7/Media: Load and display media, including images and
fonts.
• 8/Motion: Move and choreograph shapes.
• 9/Functions: Build new code modules.
• 10/Objects: Create code modules that combine variables
and functions.
• 11/Arrays: Simplify working with lists of variables.
• 12/Data: Load and visualize data.
• 13/Extend: Learn about sound and the DOM.

Who This Book Is For


This book is written for people who want to create images and
simple interactive programs through a casual and concise intro-
duction to computer programming. It’s for people who want a
jump-start on understanding the thousands of free p5.js code
examples and reference materials available online. Getting
Started with p5.js is not a programming textbook; as the title
suggests, it will get you started. It’s for teenagers, hobbyists,
grandparents, and everyone in between.
This book is also appropriate for people with programming
experience who want to learn the basics of interactive computer
graphics. Getting Started with p5.js contains techniques that
can be applied to creating games, animations, and interfaces.

Preface xiii
Conventions Used in This Book
The following typographical conventions are used in this book:
Italic
Indicates new terms, URLs, email addresses, filenames, and
file extensions.
Constant width
Used for program listings, as well as within paragraphs to
refer to program elements such as variable or function
names, databases, data types, environment variables, state-
ments, and keywords.
Constant width italic
Shows text that should be replaced with user-supplied val-
ues or by values determined by context.

This type of paragraph signifies a general note.

Using Code Examples


Supplemental material (code examples, exercises, etc.) is avail-
able for download at https://github.com/lmccart/gswp5.js-code.
This book is here to help you get your job done. In general, you
may use the code in this book in your programs and documen-
tation. You do not need to contact us for permission unless
you’re reproducing a significant portion of the code. For exam-
ple, writing a program that uses several chunks of code from
this book does not require permission. Selling or distributing a
CD-ROM of examples from Make: books does require permis-
sion. Answering a question by citing this book and quoting
example code does not require permission. Incorporating a sig-
nificant amount of example code from this book into your pro-
duct’s documentation does require permission.
We appreciate, but do not require, attribution. An attribution
usually includes the title, author, publisher, and ISBN. For exam-
ple: “Make: Getting Started with p5.js by Lauren McCarthy,

xiv Preface
Casey Reas, and Ben Fry. Copyright 2015 Maker Media, Inc.,
978-1-457-18677-6.”
If you feel your use of code examples falls outside fair use or the
permission given here, feel free to contact us at permis-
[email protected].

Safari® Books Online


Safari Books Online is an on-demand digital library that delivers
expert content in both book and video form from the world’s
leading authors in technology and business.
Technology professionals, software developers, web designers,
and business and creative professionals use Safari Books Online
as their primary resource for research, problem solving, learn-
ing, and certification training.
Safari Books Online offers a range of plans and pricing for enter-
prise, government, education, and individuals.
Members have access to thousands of books, training videos,
and prepublication manuscripts in one fully searchable data-
base from publishers like Maker Media, O’Reilly Media, Prentice
Hall Professional, Addison-Wesley Professional, Microsoft Press,
Sams, Que, Peachpit Press, Focal Press, Cisco Press, John Wiley
& Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt,
Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-
Hill, Jones & Bartlett, Course Technology, and hundreds more.
For more information about Safari Books Online, please visit us
online.

How to Contact Us
Please address comments and questions concerning this book
to the publisher:

Maker Media, Inc.


1160 Battery Street East, Suite 125
San Francisco, California 94111
800-998-9938 (in the United States or Canada)
http://makermedia.com/contact-us/

Preface xv
Make: unites, inspires, informs, and entertains a growing com-
munity of resourceful people who undertake amazing projects in
their backyards, basements, and garages. Make: celebrates your
right to tweak, hack, and bend any technology to your will. The
Make: audience continues to be a growing culture and commu-
nity that believes in bettering ourselves, our environment, our
educational system—our entire world. This is much more than
an audience, it’s a worldwide movement that Make: is leading—
we call it the Maker Movement.
For more information about Make:, visit us online:

Make: magazine: http://makezine.com/magazine/


Maker Faire: http://makerfaire.com
Makezine.com: http://makezine.com
Maker Shed: http://makershed.com/

Acknowledgments
We thank Brian Jepson and Anna Kaziunas France for their great
energy, support, and insight.
We can’t imagine this book without Massimo Banzi’s Getting
Started with Arduino (Maker Media). Massimo’s excellent book
is the prototype.
A small group of individuals has, for years, contributed essential
time and energy to Processing. Dan Shiffman is our partner in
the Processing Foundation, the 501(c)(3) organization that sup-
ports the Processing software. Much of the core code for Pro-
cessing 2.0 and 3.0 has come from the sharp minds of Andres
Colubri and Manindra Moharana. Scott Murray, Jamie Kosoy,
and Jon Gacnik have built a wonderful web infrastructure for the
project. James Grady is rocking the 3.0 user interface. We thank
Florian Jenett for his years of diverse work on the project includ-
ing the forums, website, and design. Elie Zananiri and Andreas
Schlegel have created the infrastructure for building and docu-
menting contributed libraries, and have spent countless hours
curating the lists. Many others have contributed significantly to
the project; the precise data is available at https://github.com/
processing.

xvi Preface
This book grew out of teaching with Processing at UCLA. Chan-
dler McWilliams has been instrumental in defining these
classes. Casey thanks the undergraduate students in the
Department of Design Media Arts at UCLA for their energy and
enthusiasm. His teaching assistants have been great collabora-
tors in defining how Processing is taught. Hats off to Tatsuya
Saito, John Houck, Tyler Adams, Aaron Siegel, Casey Alt,
Andres Colubri, Michael Kontopoulos, David Elliot, Christo Alle-
gra, Pete Hawkes, and Lauren McCarthy.
p5.js is developed by a large community of contributors around
the world. Dan Shiffman, Jason Sigal, Sam Lavigne, K.Adam
White, Chandler McWilliams, Evelyn Eastmond, the members of
the p5 working group at ITP, the attendees of the first p5.js Con-
tributor’s Conference at the Frank-Ratchye STUDIO for Creative
Inquiry at Carnegie Mellon University, and the students and
mentors of Processing Google Summer of Code have been
instrumental in bringing p5.js from its early days to where it is
today. Significant support for the project has been provided by
the Processing Foundation, NYU ITP, RISD, and Bocoup. You can
view the full list of contributors at http://p5js.org/contribute/
#contributors. Lauren also thanks Kyle McDonald for his perpet-
ual support and inspiration.
This book is transformed by Taeyoon Choi’s artful illustrations.
They were developed in part through a residency at the Frank-
Ratchye STUDIO for Creative Inquiry at Carnegie Mellon Univer-
sity, with support from the Art Works program of the National
Endowment for the Arts. Charlotte Stiles helped tremendously
with editing the examples and images for this book.

Through founding the Aesthetics and Computation Group


(1996–2002) at the MIT Media Lab, John Maeda made all of this
possible.

Preface xvii
Visit https://ebooknice.com to
discover a wide range of
eBooks across various genres.
Enjoy exclusive deals and
discounts to enhance your
reading experience. Start your
digital reading journey today!
1/Hello

p5.js is for writing software to make


images, animations, and interactions.
The idea is to write a single line of code,
and have a circle show up on the screen.
Add a few more lines of code, and the cir-
cle follows the mouse. Another line of
code, and the circle changes color when
the mouse is pressed. We call this
sketching with code. You write one line,
then add another, then another, and so
on. The result is a program created one
piece at a time.
Programming courses typically focus on structure and theory
first. Anything visual—an interface, an animation—is considered
a dessert to be enjoyed only after finishing your vegetables, usu-
ally several weeks of studying algorithms and methods. Over the
years, we’ve watched many friends try to take such courses only
to drop out after the first lecture or after a long, frustrating night
before the first assignment deadline. What initial curiosity they
had about making the computer work for them was lost
because they couldn’t see a path from what they had to learn
first to what they wanted to create.
p5.js offers a way to learn programming through creating inter-
active graphics. There are many possible ways to teach coding,
but students often find encouragement and motivation in imme-
diate visual feedback. p5.js provides this feedback, and its
emphasis on images, sketching, and community is discussed in
the next few pages.

1
Sketching and Prototyping
Sketching is a way of thinking; it’s playful and quick. The basic
goal is to explore many ideas in a short amount of time. In our
own work, we usually start by sketching on paper and then mov-
ing the results into code. Ideas for animation and interactions
are usually sketched as storyboards with notations. After mak-
ing some software sketches, the best ideas are selected and
combined into prototypes (Figure 1-1). It’s a cyclical process of
making, testing, and improving that moves back and forth
between paper and screen.

Figure 1-1. As drawings move from sketchbook to screen, new


possibilities emerge

2 Getting Started with p5.js


Flexibility
Like a software utility belt, p5.js consists of many tools that
work together in different combinations. As a result, it can be
used for quick hacks or for in-depth research. Because a p5.js
program can be as short as a few lines or as long as thousands,
there’s room for growth and variation. Libraries extend p5.js
even further into domains including playing with sound and
adding buttons, sliders, input boxes, and webcam capture with
HTML.

Giants
People have been making pictures with computers since the
1960s, and there’s much to be learned from this history. For
example, before computers could display to CRT or LCD
screens, huge plotter machines (Figure 1-2) were used to draw
images. In life, we all stand on the shoulders of giants, and the
titans for p5.js include thinkers from design, computer graphics,
art, architecture, statistics, and the spaces between. Have a
look at Ivan Sutherland’s Sketchpad (1963), Alan Kay’s Dyna-
book (1968), and the many artists featured in Ruth Leavitt’s
Artist and Computer1 (Harmony Books, 1976). The ACM SIG-
GRAPH and Ars Electronica archives provide fascinating glimp-
ses into the history of graphics and software.

1 http://www.atariarchives.org/artist/

Hello 3
Figure 1-2. Drawing demonstration by Manfred Mohr at Musée
d’Art Moderne de la Ville de Paris using the Benson plotter and a
digital computer on May 11, 1971 (photo by Rainer Mürle, cour-
tesy bitforms gallery, New York)

4 Getting Started with p5.js


Family Tree
Like human languages, programming languages belong to fami-
lies of related languages. p5.js is a dialect of a programming lan-
guage called JavaScript. The language syntax is almost identi-
cal, but p5.js adds custom features related to graphics and
interaction (Figure 1-3) and provides easier access to native
HTML5 features already supported by the browser. Because of
these shared features, learning p5.js is an entry-level step to
programming in other languages and using different software
tools.

Figure 1-3. p5.js has a large family of related languages and pro-
gramming environments

Join In
Thousands of people use p5.js every day. Like them, you can
download p5.js for free. You even have the option to modify the
p5.js code to suit your needs. p5.js is a FLOSS project (that is,
free/libre/open source software), and in the spirit of community,
we encourage you to participate by sharing your projects and
knowledge online at http://p5js.org (Figure 1-4).

Hello 5
Figure 1-4. p5.js is fueled by a community of people contribu-
ting through the Internet

6 Getting Started with p5.js


2/Starting to Code

To get the most out of this book, you


need to do more than just read the
words. You need to experiment and prac-
tice. You can’t learn to code just by read-
ing about it—you need to do it. To get
started, download p5.js and make your
first sketch.
Environment
First, you’ll need to get a code editor. A code editor is similar to
a text editor (like Notepad or Notes), except it has special func-
tionality for editing code instead of plain text. You can use any
code editor you like; we recommend Atom and Brackets, both of
which can be downloaded online.
There is also an official p5.js editor in development. If you would
like to use it, you can download it by visiting http://p5js.org/
download and selecting the button under “Editor.” If you are
using the p5.js editor, you can skip ahead to “Your First Pro-
gram” on page 10.

Download and File Setup


Start by visiting http://p5js.org/download and selecting “p5.js
complete.” Double-click the .zip file that downloads, and drag
the folder inside to a location on your hard disk. It could be Pro-
gram Files or Documents or simply the desktop, but the impor-
tant thing is for the p5 folder to be pulled out of that .zip file.
The p5 folder contains an example project that you can begin
working from. Open your code editor. Next, you’ll want to open

9
Random documents with unrelated
content Scribd suggests to you:
olyan meghatottságot érzett, amilyet még soha.
Az asszony a nyakába borult és azt mondta neki:
– Mindent tudok. Megbocsátok neked. Nagyon szeretlek.
– Milyen jóságos vagy te, édes Juliám! – szólt a lovag, egy kissé
elérzékenyedve.
Most tegezte életében először.
Soha se idegenkedett a feleségétől. Őszinte vonzalomból vette el
és nemcsak azért, mert látta, hogy szerelmet keltett szegénykében.
Megbecsülte sok kitünő tulajdonságát, s szeretettel, igaz barátsággal
volt iránta. Elnézte neki, – hiszen nem tehet róla! – hogy nem tudta
fölébreszteni benne azt a szenvedélyt, amelyet nem egészen
félesztendővel a házassága után a szép grófné keltett benne életre.
Talán akkor nem is vette volna el, ha olyannak látja, mint a grófnét…
amaz szeretőnek, ez feleségnek való.
De ha máskor is ragaszkodott hozzá, igy még soha se szerette,
mint ebben a percben, amikor, szegény, formátlanabb volt, mint
valaha.
Vigasztalni kezdte:
– Ej, hat év nem olyan nagy idő! Még fiatalok vagyunk mind a
ketten. Hat év hamar elmulik. És meglásd, milyen hálás leszek azért,
hogy most ilyen jó vagy hozzám!… Majd meglátod, milyen boldogok
leszünk még!
Őszintén gondolta.
– Hat évig nálad nélkül! – sirdogált az asszony. – És hat évig
folyton arra gondolnom, hogy te a börtönben vagy!
– Ej, ez a börtön nem lesz olyan rettenetes, mint képzeled. Csak
hogy éppen nem járhatok szabadon. De itt, a várban, kedvemre
sétálgathatok; a cellám pedig tágas, szép szoba. A derék Le Noir
minden kedvezést megadott, ami megkönnyitheti a fogságomat.
Olvashatok, irhatok; megkapom a könyveimet, levelezhetek
barátaimmal… Sokat fogok irni, még többet tanulni; igyekszem
tökéletességre vinni a latin, a görög és az angol nyelvben. És
munkaközben olyan hamar elmulik a nap, hogy az ember észre se
veszi. Időnkint látni foglak… Ha most találkozhattunk, találkozhatunk
később is. Eljösz, talán minden hónapban és elhozod a
gyermekünket… Hat év! Nem olyan nagy idő az! És a gondolataink
mindennap együtt lesznek néhány óráig, amig levelet irunk
egymásnak. Hat év! Hamar elmulik az! Sokat fogsz foglalkozni a
gyermekünkkel s hamar elröppen a nap. Amikor nem láthatjuk
egymást, szórakozni fogsz. Talán többet fogsz szórakozni, mint ma
gondolod…
Már féltéssel gondolt Choiseul de Meusere.
A kisirt szemü asszony kitalálta ezt a gondolatot s végre
elmosolyodott.

III.

A lovag egészen őszintén beszélt; csak nem mondott el mindent.


Nem mondta el, hogy nagyon várja a grófnét.
De hiába várta.
Az ellenségei nem feledkeztek meg róla, hogy a boszujok még
nem tökéletes. Három nap se mult el s Le Noir már megkapta az
utasitást, hogy Moncontour lovag senkivel se beszélhet.
Erre már nem mondta a lovag, hogy:
– Sebaj!
De erős akaratu legény volt, akit a balszerencse nem egykönnyen
vert le a lábáról.
Reménykedett benne, hogy ha a felesége nem tudja
kikönyörögni, a grófné módját fogja ejteni, hogy visszavonják a
tilalmat. Elég összeköttetése van hozzá.
De addig se adta át magát a szomoruságnak. Szórakozást
keresett és talált a munkában.
Tanult, olvasott, irt; dolgozni kezdett egy uj könyvön, s amikor
ezt befejezte, még egy másikon is. Mindennap hoszu leveleket irt;
gyöngédeket a feleségének és szenvedélyes hanguakat a grófnénak.
És boldogan olvasta a hozzá érkezett leveleket. Ugy a grófné, mint a
felesége leveleit. Ezek mindannyian szenvedélyes hanguak voltak.
És eleinte csakugyan gyorsan multak a napjai. Akárhányszor
annyira belefelejtkezett a munkába, hogy csak éjszaka hagyta abba,
mintha sietnie kellene.
Néha nevetett magában:
– Az ostobák! Nem jutott eszükbe, hogy könyv és irószerszám is
van a világon! Nem gondoltak rá, hogy aki levelezhet a szeretteivel,
nincs egészen elzárva tőlük! És igy nem tudták megboszulni
magukat, az ostobák!
Hanem annyi eszük mégis volt, hogy a tilalmat nem vonták
vissza. Hasztalan könyörgött a feleség, hiába ravszkodott a szerető,
nem segitett az előkelő rokonság pártfogása s kárbaveszett a
jóbarátok minden erőfeszitése.
A grófnét nem engedték hozzá; a feleségét se láthatta többé és
nem mutathatták meg neki a gyermekét.
Még az első esztendő se mult el, amikor egyszer felötlött neki,
hogy a grófné ritkábban ir és már nem olyan lángoló hangon, mint
előbb. Olyan lassu volt ez a változás, olyan nehezen észrevehető,
hogy amikor ujra elolvasta a régibb leveleit, már ezekben is talált
valami hüvösséget, ami előbb nem tünt föl neki. Az is csak most
keltette föl a figyelmét, hogy a grófnénak mindig kitünő oka volt rá,
ha valamelyik napról elmaradt a levele, de ezek a kitünő okok egy
idő óta mind jobban szaporodtak.
Ez a fölfedezés majdnem fájdalmat okozott neki, mert gyanitotta
s talán kitalálta a magyarázatot. Izgatott hangon irt a grófnénak
ezekről a rossz sejtelmeiről; kedvese kissé ingerülten felelt s szemére
vetette oktalan félténykedését; aztán egy kicsit összekaptak a
leveleikben; éles megjegyzéseket tettek egymás türelmetlenségére,
hálátlanságára, önzésére, szeretetlenségére; utóbb már gunyos
elmésségekkel is boszantották egymást; majd, ismét elkomolyodva,
kissé elérzékenyedve, egymást megsajnálva, megint más hurokat
kezdtek pengetni és kibékültek; de a régi hangot soha se találták
meg többé, a neheztelésükből valami továbbra is megmaradt, mind
gyakrabban tüztek össze s mind kicsinyesebb okokból, a
kibékülésben egyre kevesebb volt a lázas öröm, a szenvedély hangjai
mind több helyet engedtek a barátság hangjainak, s ha néha-néha
még a régi szólamokat használták, az iró is, az olvasó is érezte, hogy
mindez kissé hamisan hangzik.
A lovag eleinte szinte szenvedett e miatt, de rossz érzését nagyon
enyhitette a folytonos munka, a megszokott szórakozás, a
magánosság csöndje, a béke, amelybe börtönében beleélte magát.
Utóbb már nem tudott neheztelni a grófnéra, mert észrevette,
hogy ő maga is meghüvösödött.
Hat év fiatalembereknek nem nagy idő; de a negyedik évtől
fogva egyre kevesebbet irtak egymásnak, s a hatodik évben
Moncontour lovag csak igen ritkán gondolt a szép grófnéra.
Nagy változás ment benne végbe ez alatt a hat esztendő alatt.
A felesége pontosan irt és az ő leveleinek a hangja mindig
egyforma maradt. Ez az egyformaság nagyon megnyugtatta a
lovagot. Az első esztendőben még el-elkomorodott, ha eszébe jutott
Choiseul de Meuse; de később már soha se gondolt rá, máson járt
az esze.

É
A felesége leveleiben egyre több szó volt a gyermekükről. És ő is
mind gyakraban gondolt a kis fiára. Megkapta az arcképét;
mindennap olvasott róla, mit csinál, hogyan erősödik. Tudta, mit
gügyögött először, mikor tanult járni, mivel szeret játszani, hova
vitték, mit mondott. A hatodik esztendő elején már irni tanitották és
az első betüit elküldték az apjának.
A hatodik esztendőben már nem volt egyéb gondolata, csak a kis
fia – és hogy milyen lassan mulnak a napok.
Türelmetlenül számlálta előbb a heteket, aztán a napokat, végül
az órákat.
Egy héttel a kiszabadulása előtt egyszerre csak elmaradtak a
felesége levelei. Moncontour lovag azt hitte, hogy neki meg kell
őrülnie, mert ez a hét soha se mulik el.

IV.

Mikor Moncontour lovag otthon megtudta, hogy a kis fia egy


héttel ezelőtt meghalt, hirtelen az az érzése támadt, mintha valaki
hátulról, orozva, egy iszonyu doronggal rácsapott volna a
koponyájára.
Nem akarta megérteni, mi történt. Kábultan bámult az
emberekre.
Hosszu idő telt bele, amig egészen magához tért.
Körülnézett. Ahányszor egy uj tárgyat pillantott meg, mintha
mindannyiszor összefacsarták volna a szivét.
Itt élt a kis fia. Ezeket a tárgyakat látta. Egyikkel-másikkal
játszott is; rajtuk van a kis keze érintése. Ott nevetgélt a napfényen.
És csacsogott, kedves hangon, – amelyet ő nem hallott soha.
Egy egész élet mult el. Egy világ van oda. Itt valaki járt-kelt,
futkosott, mosolygott, nevetgélt, pajkoskodott, lármázott, betüket
vetett a papirosra, beszélgetett a vincennesi Torony lakójáról, csókra
nyujtotta a száját… ez a valaki ő volt, testestül-lelkestül ő maga!… és
ezt a valakit, – nem látta soha!
Azt mondta a kisirt szemü asszonynak:
– Nagyot vétettem ellened, de nagyon megbűnhödtem.
EGY KIS TÉVEDÉS.

I.

A közvádló felhozatta a foglyot az őrszobából, kiküldte az őröket,


aztán kockára vetve, hogy gyanuba keveri magát, elszámolva még
azzal is, hogy holnap már azon a helyen állhat, ahol most a fogoly
áll, igy szólt az irnokához:
– Raban polgártárs, kérem, hagyjon magamra ezzel az emberrel.
De ne a folyosóra menjen, hanem a benyilóba.
Raban polgártárs nagyott nézett, s tekintete nem titkolta el, hogy
nagyon meglepőnek találja a szokatlan kivánságot. De szó nélkül
engedelmeskedett.
A közvádló, miután meggyőződött róla, hogy Raban polgártárs jól
behuzta maga után a benyiló ajtaját, oda lépett a fogolyhoz, s ezzel
a kérdéssel támadta meg, halkan, szinte suttogó hangon:
– Szerencsétlen, mit tettél?
– Semmit – felelt a fogoly. – Valami borzasztó tévedés áldozata
vagyok.
– Nagyon kevés időnk van, – suttogott a közvádló. –
Rimánkodom neked, beszélj velem egészen őszintén! Akármit tettél,
mondj el mindent! Elképzelheted, hogy csak azért akarom tudni a
titkodat, mert akármibe bonyolódtál bele és akármit cselekedtél:
minden áron meg akarlak menteni. Ne hagyj a sötétben. Tisztán kell
látnom… mert csak igy tudhatom, hogy mit tegyek, hogyan
mentselek meg.
A fogoly a jobb, kezével olyan mozdulatot tett, amely világosan
kifejezte, hogy már letett minden reménységről.
– Hagyd el!… – szólt. – Nem tudok egyebet mondani. Fogalmam
sincs róla, miért hoztak ide. Csak valami borzasztó tévedés lehet…
– Az Isten áldjon meg, – esengett a közvádló – ne hidd, hogy a
föld leggonoszabb embere vagyok, s csak azért szólok hozzád a régi
barátság hangján, mert ki akarom csikarni a titkodat! Ne hidd, hogy
tőrt vetek eléd s csak azért akarlak vallomásra birni, hogy
könnyebben végezhessek veled! Értem, hogy senkiben sem bizol s
minden szörnyüséget elképzelsz; annyi mindent kellett megérned,
oly sokszor kellett látnod, ami neked iszonyatosnak tünik fel, hogy
már semmiféle rémség nem lep meg: hozzászoktál a borzalmakhoz.
Értem, ha azt hiszed, hogy véreb lett belőlem, de akárminek tartasz,
esküszöm neked, hogy veled szemben ma is a régi vagyok, a legjobb
barátod, aki soha se felejti el, mennyi hálával tartozik neked… A
testvéred, ha akarod! Akard hát! Nézd, letérdelek előtted és igy
kérlek, higyj az eskümnek!… hidd el, hogy különb vagyok, mint
amilyennek a hir mond!… hidd el, hogy megmenteni akarlak, nem
elvesziteni!… és kérlek, könyörgök neked, légy őszinte!
– Nem tudok egyebet mondani. Csak azt ismételhetem, hogy
nem is sejtem, miért vagyok itt. De hát mivel vádolnak? Neked
tudnod kell ezt.
– Összeesküvést fedeztek fel, mely a Barras életére tört. Azzal
vádolnak, hogy részes vagy ebben az összeesküvésben.
– Én?! – álmélkodott a fogoly. – Én és összeesküdni?! Ugyan
kikkel?! Egy félesztendeje nem váltottam tiz szót senkivel a
feleségemen meg a gyermekeimen kivül. Csak otthon élek;
valóságos remetévé lettem, aki örül, ha nem lát embert.
Összeesküdni a Barras élete ellen! De hiszen nekem Barras vagy más
zsarnok – tökéletesen mindegy! Utálom a ti világotokat; tudni se
akarok rólatok. A ti örökös marakodásotok, az a szörnyű, esztelen
vérengzés, amelyben ti a hatalmat, az érvényesülést, vagy a
kenyeret keresitek, engem undorral tölt el. Mi egyebet csináltok,
mint hogy meggyanusítjátok, megrágalmazzátok s aztán
lemészároljátok egymást, mindenkit, a ki az utatokban áll, a ki
vetélytársnak látszik, a kinek valami konc van a birtokában vagy a ki
ugyanarra a koncra les, amelyre ti?!… Mi egyebet csináltok, mint
hogy nap-nap után öltök-gyilkoltok, csak azért, hogy a másik helyet
csináljon nektek vagy hogy az a másik ki ne marjon a helyetekről?!…
Mindenkire rákerül a sor ebben az eszeveszett öldöklésben, mert ma
ti faljátok fel a régieket, s holnap uj emberek jönnek, a kik
benneteket falnak fel! És ez a haza, a szabadság, az előrehaladás
nevében történik! De hát azt kivánná a haza, a szabadság és az
előrehaladás, hogy az emberek úgy pusztítsák egymást, mint a
fenevadak?! Hát bánom is én, faljátok fel egymást mindannyian,
hogy hírmondó se maradjon közületek! De én látni se akarom a ti
„közélet“-eteket, a melynek minden szép jelszó csúfjára nincs más
célja, csak: a zsákmány, meg a zsákmány, s a melyben nincs más
változatosság, mint hogy: mérgezett nyíllal, hátulról, orozva lövitek
le az előttetek törtetőket, vagy a mellettetek rohanó cimborának
váratlanul kést döftök a mellébe, vagy végre hirtelen visszalőttök
arra, a kinek azt kiáltottátok: „Utánam!!“… s a kiben joggal vagy
minden alap nélkül rátok leselkedő orgyilkost sejtetek. Több, mint
két esztendeje visszahúzódtam a ti világotokból az otthonomba; s
nem érintkezem senkivel, mert mindenkit utálok. Nem járok sehová,
nem olvasok ujságot, nem nézek ki az ablakomon az utcára, s
igyekszem azokra az ártatlan gyermekes dolgokra gondolni, a melyek
nagyapáinkat foglalkoztatták, a szerencsésebb idők embereit. „Esik,
esik, pásztorlányka!…“ gyermekjátékokról álmodozom, a mig ti
folytonos öldöklésben kerestek hatalmat, sikert, kenyeret és
természetellenes kéjt. Tudod-e miből élek, több mint két éve?! Kis
szinházaknak és vásári bódéknak vidám komédiákat irok Arlekkinóról
és Kolombináról, mert arra, a mi körülöttem történik, gondolni se
akarok! És ha most itt állok előtted, ennek nem lehet más
magyarázata, mint hogy valami tévedés áldozata vagyok…
összetévesztettek valakivel s nem sokat törődnek vele, hogy ez vagy
amaz pusztul-e el… vagy valaki megírigyelte még az én nyomorult
kis keresetemet is; rendes szokás szerint, alattomban megrágalmaz
és megvádol, hogy eltehessen láb alól, hogy helyet csináljak neki, s
hogy ezentúl ő irhassa azokat az ártatlan játékokat, a melyekért
most legszívesebben nekem fizetik a két garasokat.
– Becsületszavadra mondod, hogy nem vagy részes abban az
összeesküvésben, a mely Barrast akarta megölni?
– Becsületszavamra mondom és ha akarod: a gyermekeim
életére is, hogy nem vagyok részes semmiféle összeesküvésben!
– Akkor ne csüggedj. Barras kegyetlen az ellenségeivel szemben,
de nem rémlátó és nem esztelenül vérengző. Ki fogom deríteni az
ártatlanságodat, ha ez nem is lesz könnyű munka. Mert Barras azt
mondja, hogy bünösségednek a bizonyítéka a zsebében van.
– Képtelenség.
– Bizonyos vagy benne, hogy soha se írtál le vagy soha se
mondtál róla valamit, a mit az ellenségeid félremagyarázhatnak?
– Bizonyos vagyok benne. Olyan keveset törődöm vele, hogy
sohase beszéltem róla senkivel; leveleket pedig nem írok. Alighanem
ma, előtted ejtettem ki először a nevét. Az a bizonyíték tehát csak
valami rágalmazó, hazug vád lehet, vagy ha az én írásomként
szerepel, akkor hamisítvány. Te magad sohase láttad ezt az iratot?
– Nem láttam. Barras még csak igen röviden beszélt velem az
ügyről. Azt azonban tudom, hogy kik a vádlott-társaid. Várj.
Megmutatom neked a névsort. Ez téged nyomra vezethet. Meglehet
a nevekből kitalálod, honnan fúj a szél.
A közvádló visszament iróasztalához, egy papirlapot vett elő, s
lassan, minden név után szünetet tartva, tizennyolc nevet olvasott le
a papirosról.
A fogoly úgy bámészkodott rá, mint a ki sehogy se tudja
megérteni, mit akarnak vele.
– Egyet se ismerek közülök – szólt aztán. – A legtöbbnek ma
hallom először a nevét. Mondom, csak tévedésből történhetett, hogy
gyanuba keveredtem. Összetévesztettek valakivel. Talán nagyon
hasonlitok valamelyik összeesküvőre, s a kém azt hitte, hogy engem
lát, vagy valamelyiknek a neve hasonlít az enyémhez; mért ne
lehetne közöttük, a kinek a vezetékneve is, a keresztneve is egyezik
az enyémmel?!
A közvádló más nézeten volt.
– Én azt hiszem nem tévedés okozta, ha bajba keveredtél, hanem
valami nagy gonoszság áskálódik ellened. Ármány, mely el akar tenni
láb alól, mert útjában lehetsz, mert helyet kell csinálnod neki, a
hozzátartozójának, a kedvesének, nem tudom kinek. Vagy asszonyi
boszuállás. Inkább asszonyi boszuállás, mint akármi; valamelyik
elhagyott szeretőd ezerszeresen fizeti vissza, ha valaha rosszul
bántál vele. Mert Barras azt mondta nekem, hogy egy asszony árult
el.
– Egy asszony? Miféle asszony? Ki ez az asszony?
– Hogy ki ez az asszony? Sejtelmem sincs róla, mindössze annyit
tudok az ügyről, a mit már elmondtam. De a Barras szavaira jól
emlékszem. Szóról-szóra ezt mondta: „Az összeesküvőket egy
asszony játszotta a kezemre“. Olyan asszony-e, a ki maga is részes
volt, vagy olyan, a ki csak kémszolgálatot teljesitett, – erről már nem
szólt.
– Mondom, hogy valami tévedés fojtogat. Lehet, hogy az
összeesküvésben, ha csakugyan volt ilyen, részes volt valami
asszony is; lehet, hogy az összeesküvőket ez a megbízhatatlan
társuk vagy egy szoknyás kém árulta el… de hogyan kerülök
gyanúba, vagy éppen vád alá én, a ki nem tartoztam közéjök?!
Asszony!… Miféle asszonynak állhatna érdekében, hogy elsöpörjön
az utjából vagy hogy ilyen pokoli boszút álljon rajtam?! Már régóta
kivételképpen se fordulok meg leány- vagy asszony-társaságban. Tíz
esztendeje, hogy családos ember vagyok; két év óta alig mozdulok ki
az otthonomból; azelőtt se sokat érintkeztünk ismerősökkel, mindig
otthonülő életet folytattunk. Ha kimozdulok hazulról, a feleségem
velem jön. És már jó ideje, hogy még csak nem is beszélek más
asszonynyal… már tudniillik olyan asszonynyal, a ki eszembe
juttatná, hogy ő asszony s hogy én férfi vagyok.
– Mióta házasember vagy, sohase voltak kedveseid?
– Ugyan kérlek! Szép, jó, kedves feleségem van, akit szeretek…
és hat kis leányom, a kiknek kenyeret kell keresnem… aztán annyi
dolgom, nem is képzeled!… Örülök, ha gondoskodni tudok róluk és
megszerezhetem, a mire szükségük van. Ez az egyetlen gondolatom;
az egyetlen vágyam, igyekezetem. Nem keresek én örömet az
otthonomon kivül, boldog vagyok, ha otthon lehetek.
– Tíz év óta soha egyetlenegyszer se csaltad meg a feleségedet?
– Egyetlenegyszer igen. De csakis egyetlenegyszer; kétszer már
nem. És erről a jelentéktelen kalandról, a melynek sohase volt
másnapja, nem érdemes beszélni.
– Mondd el ezt a kalandodat. Régen történt?
– Pontosan meg tudom mondani, hogy mikor. Négy-öt nappal a
legkisebb lányom születése után; tehát éppen másfél esztendeje.
Restif könyvnyomtató mester egyik hivatalszobájában dolgoztam, a
második emeleten, az utcára néző nyitott ablaknál. Véletlenül
kinéztem rajta, a mi különben nem szokásom, mert már régóta nem
igen érdekel, hogy mit csinál a többi ember. A szemközt lévő ház
második emeletének egyik, hasonlóképpen nyitott ablakában csinos
asszonyka könyökölt, a ki előbb a járókelőket nézte, aztán elkezdett
velem kacérkodni. Egyszerre egy pamutgombolyagot dobott át a
szobámba. A pamutgombolyaghoz papiros-szeletke volt kötözve, s
ezen két szó csábítgatott: „Jöjjön fel“. Aznap jobbkedvü voltam, mint
máskor. Nagy kő esett le a szivemről, hogy a kis leány sok aggasztó
jel után szerencsésen érkezett meg s nem okozott semmi bajt; Restif
mesterrel éppen akkor jó szerződést kötöttem; a szűk utcába tavaszi
napfény mosolygott be; sok nyomasztó érzés kiállása után már
nagyon szomjaztam valami kárpótlást; s aztán meg már nem is
lehetett visszavonulni… legalább szégyen nélkül nem volt rá mód.
Hát fölmentem. Ennyi az egész.
– Akkor az asszony már megvolna.
– Eh, ennek az asszonynak semmi oka se lehetett rá, hogy
boszút álljon rajtam!
– Mit tudod te azt?! Azt mondod a kalandodnak nem volt
másnapja.
– Nem. A kaland után lelkifurdalást éreztem és elhatároztam,
hogy el fogok tűnni örökre.
– Pedig megígérted neki az uj találkozót?
– Semmit se igértem neki. Nem is volt szó erről. Sokszor látott
Restifnél; bizonyosan azt hitte, hogy akkor hí át, a mikor kedve
tartja. Én pedig egyszerűen nem mentem többet Restifhez; jobbnak
láttam elküldeni hozzá az írásaimat.
– Ha nem is igértél semmit, azért mélyen sérthette ezt az
asszonyt, hogy nem akarod látni többé. Éppen ez az, a mit az
asszonyok soha se bocsátanak meg. Tudta, hogy ki vagy?
– Tudhatta, mert ismert alak voltam a Restif utcájában. De
biztosítalak, hogy tévedsz. Ugy gondolkozol, mintha ez az asszony
szeretett volna engem. Szó sincs róla. Neki ez a kaland még
jelentéktelenebb esemény volt, mint nekem; mert míg nálam
egyetlen kivétel, nála talán mindennapos, legalább is megszokott
valami az efféle románc. Különben bár csak egyszer találkoztunk, jól
ismerem ezt az asszonyt. Mondhatom: tisztában vagyok vele.
Mindenekelőtt sokkal jámborabb lélek, semhogy az ilyen ördögi
gonoszság kitelnék tőle. Azzal szemben sem volna képes ilyesmire,
akit a legjobban szeret s aki a legridegebben taszitotta el magától.
Inkább az érzelgésre hajlik, mint a boszuállásra. Fellengős lélek, a ki
szeret mindent, a mi szép, de még jobban szereti a férfiakat. Az
asszonyi gyöngesége határtalan; de ez a gyöngeség az egyetlen
hibája.
– Olyan jól ismered? Tehát tudod, hogy kicsoda?
– Tudom. Az igazi neve ebben a percben nem jut eszembe, de
alighanem hallottál róla. Egy vidéki ügyvéd felesége volt, de ettől
megszöktette a nemzetgyülés egy tagja, a ki Párisba hozta. Később
összekülönbözött a kedvesével és azóta temérdek kalandja volt.
Most is ez a főfoglalkozása; az üres óráiban pedig nagyon szerelmes
regényeket ír, a melyekben sokkal több a szerelem, mint az
irodalom: Madame de Morency néven. Mondom, jól ismerem – a
könyveiből.
– Valami kezd derengeni előttem… csakhogy ez, sajnos, éppen
nem biztató rád nézve. A nemzetgyűlésnek az a tagja, a ki Madame
de Morencyt Párisba hozta és aztán lerázta a nyakáról: Langlois-
Montfort. Nos, nem emlékszel?… csak az imént hallottad a Langlois-
Montfort nevét. Vádlott-társad; s Barras szerint: az összesküvők feje.
Mondom, ez az asszony pokoli boszút áll azokon, a kik valaha a
faképnél hagyták!
A fogoly egy pillanatig elgondolkozott.
– Nem – szólt aztán – nem hiszem. Más fajtából való, nem abból,
a melyik halálos sértésnek találja, ha az udvarlója tovább áll. Maga is
kedveli a változatosságot, tehát megérti és megbocsátja, ha a
kedvese olyan hamar tova száll, mint a pillangó. Hallgasd ki s meg
fogsz győződni róla, hogy nem neked, hanem nekem van igazam.
Rendeld ide; ürügyet könynyen találsz rá, hogy mért hallgatod ki.
– Ezt megtehetem… azaz, hogy… most jut eszembe!… Nem,
szegény fiú, nincs szerencséd!
A közvádló elkáromkodta magát.
– Mért nincs szerencsém?
– Mert mégis csak nekem van igazam, a mikor azt mondom,
hogy: ez a nő a vádlód! És mindjárt nem fogsz vitatkozni velem, ha
megtudod, hogy… A Morency! Persze, hogy a Morency! Most már
mindent értek!
– Mit tudsz róla? Mi jutott eszedbe?
– A Morencyt, barátom, nem hallgathatom ki. Ide s tova egy
hete, hogy nincs Párisban. Megszökött s azóta már bizonyosan
eljutott Angliába, a honnan aligha csábítjuk haza. A kedvedért
semmi esetre sem fog visszajönni. De talán jobb is ha nem jön
vissza, hanem ott marad, a hol van, Londonban, vagy ördögtársai
között, a pokol fenekén.

II.

Az éjszakai feketeség már sötétkékre vált s a fogoly még nem


aludt. Felbámult a magasba, börtönének ablakára, amely mögött,
kivül az utcán, időnkint munkába siető hajnali alakok haladtak el.
A hat kis lány… azok még nyugodtan alusznak otthon. De, majd
aztán, mi lesz velök?!…
És az a szegény asszony, aki nem vétett senkinek és nem tehet
semmiről!…
Hol reménykedett, hol kétségbeesett.
Akármilyen bolond időket éltek, el kell-e pusztulnia, ennyire
ártatlanul?!…
Neki, – aki a legmesszebbre huzódott a politikának nevezett
érdekharcoktól!… Neki – a remetének, aki nem keveredett bele az
általános marakodásba!… Neki – talán az egyetlen embernek – aki
nem ármánykodott, nem fenekedett, nem agyarkodott, nem küzdött,
még csak nem is orditozott senki ellen, aki senkit se gyűlölt, mert
mindenkit megvetett, aki borzadt a vérszagtól s attól az
embertelenségtől, attól a rémes öldökléstől, amely egy idő óta, ugy
látszik, életszükséggé, életföltétellé vált, aki undorodott attól a
kenyértől, amelyre embervér frecscsent!… Neki, az egyetlennek, aki
félrevonult a tülekedők, a törtetők, a verekedők, az egymásnak
gáncsot vetők, az egymás torkát fojtogatók világából, azok világából,
akik lebicskázzák egymást, hogy kiragadhassák a másik szájából a
félig megrágott kenyeret!… aki soha se akart egyebet, mint békében,
csöndesen dolgozgatni, másnak nem ártó, mást nem rontó, mást
meg nem mérgező munkából élni meg!… aki megélni is csak azért
akar, hogy eltarthassa a családját!
És ime, úgy látszik, mégis el kell puszulnia. Megöli a buta
véletlen. Valami otromba tévedés.
Vagy azért kell meghalnia, mert egyszer, egyetlen egyszer vétett
az ellen a hűség ellen, amelylyel annak a szegény asszonynak
tartoznék?! És így nem a véletlen ront rá, hanem a nemezis?!
De hát éppen neki kell lakolnia egy olyan megfelejtkezésért,
amelyen a többiek csak mosolyogni tudnak, abban a világban, ahol
semmi se szokottabb, közönségesebb és mindennaposabb, mint az
ilyen megfeledkezés?!… Százezer meg százezer férfi közül, akiknek
legtöbbje csak ennek a megfelejtkezésnek él, éppen neki kellene
meglakolnia, neki, aki talán mindegyiknél kevésbbé hibás?!…
És ilyen keményen kellene lakolnia azért, amit más büntetlenül
követ el számtalanszor, vagy amiért más csak bosszúsággal, a
legrosszabb esetben családi perpatvarral bünhődik?!… Bár az a
szegény asszony, az egyetlen, aki ellen vétett, olyan örömest
megbocsátana!… Bár a bűnhődése ennek a szegény asszonynak lesz
a legfájdalmasabb!… Bár a nemezis ezt a szegény asszonyt még
jobban fogja sujtani, mint őt magát, és nemcsak a legjobban, hanem
a legtovább is, talán az egész életén át?!
Nem lázítja-e fel az értelmet, hogy ezért kellene elpusztulnia?!…
De ha nem ezért pusztul el: úgy ártatlanul fog meghalni semmiért, a
buta, vak véletlen rosszakaratából, csak azért, mert a balszerencse,
amely mindig üldözte, most egész súlyával zuhan rá… éppen ő rá
zuhan, noha találhatna erre érdemesebbet is!…
Nem, nem. Ha tévedésből kellene elvesznie, ez nagyon ostoba
dolog volna. Még ezekben a bolond időkben is tulságosan ostoba
dolog.
Az élet tiltakozott benne az ellen, hogy elhigyje, amivel a sors
fenyegetőzik.
Hát bele lehet ebbe nyugodni?!…
Megint reménykedni kezdett.
Meg fogják menteni. Ki fogják deriteni az ártatlanságát. A barátja
hatalmas ember és igaz barátnak mutatkozik.
Ha tudta volna, hogy ez a hatalmas ember azóta már a
szomszédos cellában viaskodik az álmatlansággal s azt nézi, amit ő:
hogy odafenn, a magasban, a börtönablak mint válik kékszinüről
szürkévé és szürkéről fehérré!…

III.

– Nagyon melegen véded a barátodat – szólt Barras, amikor a


közvádló elmondta neki, amit Norvins de Belleval megmentésére
szükségesnek tartott.
– Sok jót tett velem, amikor üldözött vad voltam. Mentegetném
akkor is, ha bűnösnek tudnám. De amiket elmondtam, téged is
meggyőzhetne arról, hogy ártatlan. Jól ismerem, a gyermekkora óta;
maga az egyeneslelkűség és a becsületesség. Ha részese lett volna
az összeesküvésnek, nem tagadná le. Egyebet akkor se csikarunk ki
belőle; de a bűnösségét megvallotta volna az első szóra. Mindaz,
amit elfogulatlan tanúk mondanak róla, egybehangzik a
védekezésével. Kétségtelenül megállapitható, hogy már nagyon
régen visszahúzódott minden olyan helyről, ahol a közügyek csak
szóba is kerülhetnek; soha se vett részt összejövetelekben;
nincsenek cimborái; nem tartozik azok közé, akik minduntalan
összedugják a fejöket, mindig elégedetlenkednek s mindenki ellen
ármánykodnak; csak az otthonában élt; jóformán ki se mozdult
hazulról.
– Hm. És ez bizonyossá teszi előtted, hogy ártatlan?
– A gyermekei életére esküdött meg nekem, hogy nem vett részt
semmiféle összeesküvésben.
– És mégis hazudott.
– Nem esküdött volna a gyermekei életére.
– Eh, amikor valaki másképpen már nem képes megmenteni a
bőrét, megesküszik akármire. Tudja, hogy a szavak nem ölnek. Nem,
nem érdemes beszélni erről. Értem, hogy szeretne menekülni, de
előttem hiába erősitgeti az ártatlanságát, mikor bűnösségének a
bizonyitéka itt van a zsebemben.
– És mi ez a bizonyiték?
– Megmondom neked, hogy nyugodtabb legyen a lelkiismereted.
Kétségtelen, hogy a Morency részese volt az ellenem szőtt
összeesküvésnek; az is, hogy az összeesküvők az ő szállásán
tartották az összejöveteleiket. Mind ez világosan kiderül a Morency
levelezéséből. Nos, a Morency papirosai között megtaláltam az
összeesküvők névsorát is; ez a névsor a Morency kezeirása és ez az
áruló irás itt van a zsebemben.
– Az összeesküvők névsora?
– Az összeesküvők névsora.
– Azt gyanitom, valami nagy tévedésben vagy. Norvins de
Belleval nem hazudhatott nekem. Elmondta azt is, hogy ismeri a
Morencyt és volt nála egyszer. De csak egyszer és akkor se rólad volt
szó, hanem – szerelemről. Lehet, hogy a Morency csakugyan
ármánykodott ellened, de hogy a szerelem sokkal gyakrabban
foglalkoztatta, mint a politika, az egészen bizonyos.
– Tévedésről szó sem lehet. Az összeesküvők névsora
kétségtelenül a Morency kezeirása…
– Ez az irás hazudhatik. A Morency talán szándékosan keverte
gyanuba azokat, akiken akármiért, talán mert megsértették,
visszautasitották vagy elhagyták, bosszut akart állani. Az ilyen
asszonytól minden kitelik.
– Mondom, nem érdemes erről beszélni. Beszéljünk arról, ami
engem jobban érdekel. Hogy egy idő óta nagyon tüzesen
védelmezed az ellenségeimet. Ez már a harmadik eset. Őszintén
szólva, nagyon különösnek találom, hogy ez rövid időn harmadszor
történik. Ha nem akarod elvesziteni a bizalmamat, azt ajánlom, hogy
ez negyedszer ne történjék. És most hagyj magamra.
Olyan furcsán nézett a közvádlóra, hogy ennek, mialatt lement a
lépcsőn, ez a gondolata támadt:
– A legokosabb alighanem az volna, ha egyszerűen futásnak
erednék és meg se állanék addig, amig el nem érem az angol hajót.
De minden áron meg akarta menteni barátját. És maradt.
Rosszul tette. Még akkor este elfogták. Nem adtak tudtára
semmit, de kitalálhatta, hogy mi történt. Megfosztották a hivatalától,
s pört inditanak ellene, azon a cimen, hogy szövetkezett Barras –
tehát a köztársaság – ellenségeivel. Barras csak azért állott szóba
vele, hogy meg ne szökjék.
Hanem a közvádló nem élt remete-életet, mint Norvins de
Belleval. Voltak hivei, barátjai és érdektársai, akik még szerepet
szántak neki. És hivei szövetségesekre találtak a Barras ellen
ármánykodókban, akik valamennyien szabad lábon voltak, mert
Barras, tévedésből, nem az igaziakat fogatta el és csukatta le.
A szövetségesek csakugyan ki is szabaditották emberüket. Másfél
hónappal később, közvetlenül az után, hogy kihallgatásra vitték birái
elé, őrei nem szállitották vissza börtönébe, hanem elhajtattak vele
Vincennes felé, Páris város kapujánál felmutatták a hamis, de
kifogástalannak látszó igazoló irásokat, majd álruhát adtak a
fogolyra, ellátták Angliába szóló, hamis útlevéllel, elvitték az első
postakocsi-állomásra, ahol egy hű emberük a szökevényt beültette a
postakocsiba, aztán a börtön kocsijával visszafordultak Páris felé s
örökre eltüntek a világból.
A börtön kocsiját később megtalálták a vincennesi erdőben.
Megtalálták az igazi őröket is, felpeckelt szájjal, összekötözötten, egy
párisi korcsmában. De a vakmerő szöktetőknek nyomuk veszett.
Barras nem is kerestette őket sokáig. Ekkor már temérdek baja
volt; lépten-nyomon ellenségre bukkant. Örült, ha elbánhatott
azokkal, akik jelentkeztek; s nem kereste azokat, akik már eltüntek.
A szökevény szerencsésen eljutott Angliába.
Ott megtudta, hogy időközben – még a kiszabadulása előtt –
véget ért az a pör, amelyet Barras Langlois-Montfort és társai ellen
inditott. Mind a tizennyolc vádlottat halálra itélték és kivégezték:
Norvins de Bellevalt is.

IV.

Egy héttel később, amint London utcáin sétálgatott, szembe jött


vele a Morency.
Elfordult és át akart menni az utca másik oldalára.
De a Morency megszólitotta.
– Savinien – kérdezte a szép asszony – miért nem akar rám
ismerni és miért néz rám igy?!…
– Asszonyom, – felelt Savinien – annak a nőnek, aki elárulja
összeesküvő társait, hogy megmentse a tulajdon életét, talán még
meg lehet bocsátani… főképpen azért, mert: ugy kell azoknak, akik
asszonyra bizzák a titkukat!… de annak a nőnek, aki gyanuba kever,
megvádol ártatlanokat, csak azért, hogy boszut álljon rajtok, – nem
tudom, miért – annak a nőnek én nem tudok megbocsátani.
– Megőrült?! – álmélkodott a Morency. – Miféle összeesküvésről
beszél?! Miféle árulásról?! Ártatlanokról, akiket boszuból gyanuba
kevernek, megvádolnak!… Nem értem.
– Tagadja, hogy részes volt abban az összeesküvésben, mely
Barrast meg akarta fosztani a hatalmától?!… Tagadja, hogy amikor
neszét vette a bajnak s megszökött – már akár ijedtségből történt
ez, akár azért, mert kezdettől fogva igy tervezte – kiadta
összeesküvő társait az ellenségnek, mert áruló iratokat hagyott a
lakásán?!… Tagadja, hogy…
– Várjon… nem tudok ennyi kérdésre egyszerre felelni… Mit
beszél össze-vissza?!… Nem tagadom, hogy részes voltam az
összeesküvésben; gyűlölöm ezt a Barrast… Az is igaz, hogy
megszöktem, mert a társaim figyelmeztettek, hogy baj van… ők
maguk kértek erre, amikor Barras gyanakodni kezdett, hogy nálam
tartják az összejöveteleiket… De nem árultam el senkit… nem is
értem, mért vádol ezzel… hiszen összeesküvő társaimnak semmi
bajuk!… Valamennyien szabadon járnak-kelnek, ki itt Londonban, ki
otthon Párisban!…
– És Langlois-Montfort meg tizenhét társa?!… Köztük Norvins de
Belleval, aki nekem nemcsak a barátom volt, hanem a jóltevőm is,
szinte a testvérem?!…
– Engem vádol a halálukkal?! De hát mit tehetek én róla, hogy
Barras elitéltette és kivégeztette őket?!
– Norvins de Bellevalt, Langlois-Montfort-t, meg a többieket azért
végezték ki, mert az ön papirosai közt megtalálták a Barras ellen
összeesküvők névsorát s ezen az áruló papiroson, amelyen rá kellett
ismerni az ön kezeirására, tizennyolc név volt: Norvins de Belleval,
Langlois-Montfort, meg a többiek neve.
– Ó, ó, ó!… Mily szörnyü tévedés!… De hát gondolhattam-e rá,
amikor hirtelen menekülnöm kellett, hogy micsoda irkafirkák
maradnak a lakásomon?! Ez a névsor nem az összeesküvők névsora
volt, hanem azoké, akik valaha a szeretőim voltak!
A BARÁT VIZET PRÉDIKÁL.

Polikárp atya gyönyörü prédikációt tartott a szesz hatásáról.


Dörgő hangon ítélte el azokat, a kik, noha Isten képére vannak
formálva, nem átallják a pálinkától disznókká aljasodni, s a hivek
megtisztult lélekkel, nemes szándékban gazdagon s ajkukon Polikárp
atya dicséretével hagyták el a templomot.
A perjel nem győzte magasztalni a jeles szónoklatot, a többi
barát se fukarkodott az elismeréssel s ez a rendkivüli hatás fölötte
jókedvüvé tette Polikárp atyát. Örömében nagyon is sokat talált
behörpinteni Tokaj borából; olyan sokat, hogy végre a refektórium
asztala alá bujt s kukorékolni kezdett, azt erősítvén, hogy ő
voltaképpen kakas, a kinek most már kutyakötelessége a hajnal
közeledtét hirdetni. Nem tudták a fejébe verni, hogy nincs a
szemétdombon, s hogy voltaképpen most is csak Polikárp atya
volna; reggelig kukorékolt.
Mikor kijózanodott, jelentkeznie kellett a perjelnél. A perjel
tudtára adta, hogy tekintettel a szónoklattal szerzett érdemre, ez
egyszer elengedi a büntetést; de a feddő szavakat természetesen
nem engedhette el s csodálkozással elegyes szemrehányással
kérdezte, hogy ugyanaz az ember, a ki oly ékes szavakat talált az
iszákosság megbélyegzésére, hogyan felejtkezhetett el magáról ilyen
rettenetesen?
– Miért ittál olyan sokat? – kérdezte. – És éppen te?!…
Polikárp atya megvakarta a feje bubját; s csakugyan sikerült
előkaparnia a legjobb mentséget.
– A tisztaság okáért ittam – magyarázgatta bünét. – Két rossz
közül kellett választanom, hát a kisebbik rosszat választottam.
Meggyónom neked, lelki atyám, hogy hébe-hóba, olykor elfog a
kisértés, vétkezni az asszonyi állat által, ilyenkor csak egy módot
tudok elüzni a gonoszt: ha italba fojtom.
– Rosszul védekezel, Polikárp fiam – felelt a perjel. – A tapasztalt
pogány szerzők mindig azt erősitették s a tudósok könyvei is arra
tanitanak, hogy Ceres, Bacchus és Venus együtt járnak. Az ital nem
hogy védelmet nyujtana a testiség ellen, ellenkezőleg, testiségre
csábít.
– Igen, ha oktalanul keveset iszik az ember – felelt Polikárp atya.
De ha a kisértések közt vergődő, bölcsen, sokat iszik, akkor
megfelejtkezik mindenről, tehát a bünről is. És én ilyen jó
szándékból, mondhatnám: szent célból ittam sokat… hogy a
nagyobb bűnt kiverjem a fejemből… ami sikerült is.
– Máskor, – ítélt a perjel – ha megint elfog a kísértés, folyamodjál
inkább az imádkozáshoz. Bizd magad a gondviselésre. Ha segít az
imádság, nem kell magadnak szemrehányást tenned; ha nem segít…
még akkor is meglesz az a mentséged, hogy a helyes uton kerested
az égi kegyelmet és ez a mentséged meg fogja szerezni a
bocsánatot. De ne válaszd a bizonyos bűnt attól való féltedben,
amely bizonytalan.
– Igenis – felelt Polikárp atya.
És nem sokára jelentkezett, hogy ismét prédikációt szeretne
tartani, amely kivánságát természetesen örömest teljesítették.
Ez alkalommal Polikárp atya ujból a szesz káros hatásáról
szónokolt, de most nem a pálinka, hanem a borital veszedelmeit
ecsetelte élénk szinekkel. „A sok a jóból is megárt!“ – dörögte.
A perjelnek tetszett a beszéd.
– Látszik, – dicsérte magában Polikárp atyát – hogy a tapasztalás
és igaz megbánás szól belőle. Őszinte szánom-bánom és hozzáértés;
mindenkinek látnia kell, hogy ez az ember tudja, mit beszél. Büne
tehát nem volt egészen hiábavaló. Ha ártott is vele magának,
egyben járatosságot szerzett arra nézve, hogy miképppen kell helyes
irányba téríteni a tapasztalatlanokat.
S nem győzte áldani a gondviselést, mely ugy intézkedik, hogy
semmi se vesszen kárba, még a rossz se.
De óvatosságból nem szólt Polikárp atyának. Félt, hogy Polikárp
atya elbizakodván, ugy jár, mint a multkor.
Bölcs előrelátás volt, mert Polikárp atya, társainak hizelgő szavait
hallva, a sikerült beszéd örömére ismét nagyon sokat szedett
magába Tokaj nemes nedüjéből s alig végződött el a vacsora, máris
az asztal alá gurult.
Ezuttal azonban nem kukorékolt, hanem bömbölt, azt állítván,
hogy ő oroszlán.
Másnap persze felelnie kellett bünéért.
– Miért ittál megint? – kérdezte a perjel.
– Elkeseredésből – mentegetőzött Polikárp atya. – Mind a két
lábom tele van tyukszemmel, a melyek járásközben minduntalan
kinoznak. És ez a testi szenvedés eszembe jutatta lelki
szenvedéseimet. Hogy hiába iparkodom, nem tudok szert tenni a
lelki tökéletességre. És ennek az átkozott italnak megvan az a
tulajdonsága, hogy minden szenvedést felejtet. Minél többet iszik
belőle az ember, annál jobban vigasztal. Mikor már nagyon sokat
ittam, ugy éreztem, hogy olyan erős vagyok, mint az oroszlán, és
olyan szent, mint az evangelista. Nem éreztem a tyukszemeimet;
csak az üdvözültek lelki békéjét éreztem. Ezért a néhány percnyi
szent boldogságért ittam. Én vétkem, én legnagyobb vétkem!
– Igen, – felelt a perjel – ennek az átkozott italnak megvan a
nevezett tulajdonsága… de azért a kis mámorért mily váltságot
fizetsz s mily uzsorakamatokkal!… Néhány percnyi jóérzésért egész
napi fejfájással, testi és lelki romlással adózol. Máskor, ha lelked
szenved, keress gyógyulást az imában; ha pedig a tyukszemeid
kinoznak, vágasd ki. Most pedig, hogy jobban emlékedbe vésd
tanácsomat, egy napig celládban elmélkedel és bőjtölni fogsz.
– Igenis – felelt Polikárp atya.
Mikor legközelebb ujra Polikárp atyának kellett a prédikáló
székben megjelennie, a perjelnek már egy cseppet se tetszett, hogy
Polikárp atya ismét a szesz káros hatásáról dörög.
Pedig Polikárp atya ez alkalommal a tárgynak egy eddig még nem
részletezett új fejezetét fejtegette és igen józan dolgokat mondott.
Azt magyarázta, hogy a mértékletes, de rendes borivás még
veszedelmesebb, mintha az ember nagyritkán ki-kirug a hámból,
mert a méreg rendszeres használata biztosan megőrli a testet és a
lelket.
De a perjel jól sejtett. Polikárp atya a harmadik szónoklat
örömére is átadta magát a borital élvezetének s nyilván azért, hogy
a mértékletes ivás veszedelmét kerülje, annyit nyakalt be a tokajiból,
hogy végül teljesen elázott s ismét csak az asztal alatt végezte. Ott
azt erősítgette, hogy ő nem ember, hanem szamár, amely kirug a
hámból és virradatig rugódozott, „I-á“-t kiáltozva.
– Miért ittál újra, szerencsétlen? – kérdezte a perjel másnap,
amikor Polikárp atya, kialudván mámorát, megjelent előtte, hogy
megtudja, minő vezeklés vár rá. – Megint elő tudsz állani valami új
mentséggel?!
Már kiváncsi volt rá, hogy Polikárp atya miképpen igyekszik
igazolni menthetetlen viselkedését, mely senkinél se volt
érthetetlenebb, mint éppen annál az apostolnál, aki minden szép
szavával, egész életén át folyton a szesz ellen küzdött.
– Tudományszomjból ittam – rögtönözte a védekezést Polikárp
atya. – A szesz kétségtelenül méreg, de a tudomány a mérget is
gyógyitó szerré tudja szelidíteni, a kellő adagolással. Mert minden
Isten ajándéka. A mérget is azért adta, hogy megismerjük, gyógyító
szerré változtassuk és hasznunkra fordítsuk. Azért ittam, hogy
tapasztalatot szerezzek, hogy megismerjem, melyik az az adag,
amely a szesz mérgét gyógyító szerré nemesíti, de sajnos,
elvétettem az adagolást.
– Hazudsz, gazember! – kiáltott a perjel. – Nem a tudományt
szomjaztad te, hanem a részegség adta mámort! De nem is kerülöd
ki a méltó büntetést, mert, ime, egy hétig eltiltalak minden
husételtől!
Sajnos, ez a szigorú büntetés se javitotta meg Polikárp atyát. Alig
hogy elmondta negyedik prédikációját, amelyben ragyogó szavakkal
fejtette ki, hogy úgy a mennyországra, mint a földi boldogságra csak
azok tarthatnak számot, akik tökéletesen meg tudják tartóztatni
magukat a szesz élvezetétől, még a legcsekélyebb mennyiségű szesz
élvezetétől is – megint leitta magát a sárga földig.
Ezuttal azonban az asztal alatt azt mondta, hogy ő őszinte disznó,
tehát hagyják őt békében.
És reggelig röfögött; nyilván azt képzelte, hogy sárban fekszik.
A perjel most már nagyon haragudott.
– Szeretném tudni, – szólt, mikor a szégyenkező Polikárp atya
beállított hozzá, bocsánatot és kegyelmet kérni – találsz-e most is
valami új mentséget?!… Miért ittál megint?!… Meg tudnád mondani?
Polikárp atya megkaparta a feje búbját; de immár nem talált ott
semmi új mentséget.
Olyan sokáig keresgélte a feleletet, hogy a perjel megismételte a
kérdést:
– Miért ittál?
A perjel hangjában annyi volt a fenyegetés, hogy Polikárp
atyának hirtelen nagy elhatározása támadt. Ha az ember nem talál
elfogadható hazugságot, nincs okosabb, mint az őszinteség.
Behunyta a szemét és elszántan felelt:
– Mert inni jó.
A perjel azt hitte, hogy nem jól hall.
– Mit mondtál?
De Polikárp atyának a hite erős volt és ha már hozzáfogott, hát
meggyónt egészen.
– Mert inni jó – ismételte. – A bor Isten adománya és nem
vagyok az első, aki ezt az ajándékot megbecsüli. Noé is jónak találta
a bort, azért mégis kegyelmet talált Isten előtt. És ha jó, hát nem
lehet arra való, hogy használatlan maradjon. Ha az oktalanoknak
nem kell, ha vannak, akik ott hagyják, ahol van, részvétlenül: én
megiszom, részvétből. Vagy mások élvezzék? A bűnösök? Netalán a
hitetlenek? Miért ne élvezzem én, az igaz?
– És ezt te mondod, – szörnyűködött a perjel – te, aki oly szép
beszédekben ítélted el a részegeskedést?!
– Én most is elítélem a részegeskedést – felelt Polikárp atya
bátran. – De az igazság isteni és az ember gyarló. És az én
gyarlóságomnak megvan az a mentsége, hogy akármilyen esendő
vagyok, azért mégis az igazságért küzdök. Ha magam elbukom is,
minden csekély erőmből rajta vagyok, hogy legalább másokat
visszatartsak a bűnbeeséstől, hogy legalább másoknak felnyissam a
szemét és megmagyarázzam a tapasztalatlanoknak, milyen romlásba
vezet az ital. Már csak ezért is megérdemlem a bort. Mert a bor néha
a sátán fegyvere, amelylyel bűnbe és romlásba csábítja a gyöngét,
de a bor azért valójában, a maga jóságában, mégis csak az Isten
ajándéka, amelylyel megjutalmazza az igazságért küzdőt, a jóért
buzgót, a tisztalelküt s a mértékletest.
– Magad mondtad, hogy a mértékletes ivás még biztosabban
megőrli az embert, mint a szórványos kicsapongás.
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!

ebooknice.com

You might also like