Microsoft Word - tik-ladder-rope-J.doc

מסמכים קשורים
מבוא למדעי המחשב

מבוא למדעי המחשב

PowerPoint Presentation

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

Slide 1

Microsoft Word - pitaron222Java_2007.doc

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

מבוא לתכנות ב- JAVA תרגול 11

תרגול 1

Slide 1

Slide 1

מבוא למדעי המחשב

מבוא למדעי המחשב

אתגר קוביות מחייכות תכולה: 12 קוביות חוברת הוראות ופתרונות ספרון הכולל 60 חידות חידות בדרגות קושי שונות תפיסה חזותית וחשיבה לוגית הקדמה המשחק פרצופים

מבוא לתכנות ב- JAVA תרגול 7

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

מהוא לתכנות ב- JAVA מעבדה 3

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

סדנת תכנות ב C/C++

מבוא למדעי המחשב

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

Slide 1

PowerPoint Presentation

PowerPoint Presentation

תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1

PowerPoint Presentation

PowerPoint Presentation

Slide 1

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

PowerPoint Presentation

תרגול 1

עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכ

מבוא למדעי המחשב

Microsoft Word - c_SimA_MoedB2005.doc

תרגול 1

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

שאלהIgal : מערכים דו מימדיים רקורסיה:

Microsoft PowerPoint - 10_threads.ppt

תרגול 1

PowerPoint Presentation

סיכום הוראות Touch touchend יקרא לפונקציה כשיסתיים המגע עם הסמארטפון. - touchmove יקרא לפונקציה במהלך תזוזת המגע עם הסמארטפון. touchstart יקרא לפונקצי

PowerPoint Presentation

המינהל למדע וטכנולוגיה הפיקוח על מדעי המחשב עתודה מדעית טכנולוגית מדינת ישראל משרד החינוך המינהל הפדגוגי אגף בכיר בחינות בחינת מפמ ר במדעי המחשב לכיתה

מצגת של PowerPoint

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

תורת הקומפילציה

PowerPoint Presentation

הגשה תוך שבוע בשעת התרגול

Tutorial 11

מקביליות

תרגול 3 - מערכים

מבוא למדעי המחשב, סמסטר א', תשס"ח תרגול מס' 2

PowerPoint Presentation

PowerPoint Presentation

שאלהIgal : מערכים דו מימדיים רקורסיה:

1

מתכונת עיצוב 3013

תוכן העניינים

לנץ קרן מרצה: תכנותמונחהעצמים) ( יוםשישי 15 אוקטובר 0202 ב מועד 0202, אביב סמסטר סמסטר סוף מבחן גוטמן אייל רביב, אריאל משנה, אלון מתרגלים: הנחי

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

Microsoft PowerPoint - rec3.ppt

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

Microsoft Word - דוגמאות ב

מבוא למדעי המחשב

מבוא למדעי המחשב - חובלים

Slide 1

1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle ב

תרגול מס' 7: תרגילים מתקדמים ברקורסיה

Slide 1

מס' סידורי: ת.ז.: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך ה

Microsoft PowerPoint - lec10.ppt

HTML - Hipper Text Makeup Language

תוכנה 1 בשפת Java שיעור מספר 3: "חתיכת טיפוס"

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

Microsoft PowerPoint - lec 04 Gui Form_Item.pptx

מבוא למדעי המחשב - חובלים

Slide 1

שאלהIgal : מערכים דו מימדיים רקורסיה:

1

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

Microsoft Word - c_SimA_MoedA2006.doc

Microsoft PowerPoint - rec1.ppt

Microsoft Word B

שאלה אחת

Microsoft PowerPoint - rec8.ppt

שקופית 1

Microsoft Word - Ass1Bgu2019b_java docx

PowerPoint Presentation

Slide 1

Slide 1

שקופית 1

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

תמליל:

פרויקטים שהוכנו על-ידי משתתפי קורס מורים מובילים תש "ע לא ניתן לפרסם את החומרים או לעשות בהם כל שימוש מסחרי ללא קבלת אישור מראש מצוות הפיתוח משחק סולמות וחבלים גרסת ג'אווה פיתוח הפרויקט : יהודה אבני: גרסת סי שרפ אביטל (Evi) גרינולד: גרסת ג'אווה דורית כהן: גרסת סי שרפ המחלקות המרכיבות את הפרויקט תיעוד שם המחלקה מחלקה המדמה את המשחק.. מציגה את הלוח, הקובייה, ואת מיקום Game השחקנים על הלוח מחלקה מופשטת המייצגת עצם הניתן ליצור על פאנל Drawable מחלקה המכילה עצם מטיפוס Drawable וקואורדינטות x,y המהוות פינה DrawPanel שמאלית עליונה של העצם. לוח משחק עם מערך שחקנים Board מחלקת שחקן. לשחקן יש שם, צבע, מיקום, נקודות ומספר צעדים שעבר על Player הלוח. קוביית משחק Die 1

תרשימי UML למחלקות: Game extends JFrame private Board board; לוח משחק private Player[] players; מערך שחקנים private Die die; קובית משחק פאנל ללוח boardpanel; private DrawPanel פאנל לקוביה diepanel; private DrawPanel פאנל לשחקן player1panel; 1 private DrawPanel פאנל לשחקן player2panel; 2 private DrawPanel private JButton broll; כפתור לזריקת קוביה private JButton bmove; כפתור לתזוזת שחקן על הלוח private int index; מספר מציין לשחקן private Point newpos; מיקום על הלוח private int win=-1; מציין למנצח האם משחק התחיל gamestarts=false; private boolean public Game() פעולה בונה משחק Board extends Drawable static private Random rnd = new Random(); גודל הלוח SIZE=9; final static int לוח משחק ריבועי board; private Point[][] מערך שחקנים players; private Player[] פעולה יוצרת לוח עם שחקנים players) public Board(Player[] פעולה מחזירה מיקום בלוח pos) public Point getcellvalue(point פעולה מחזירה מיקום בלוח col) public Point getcellvalue(int row, int פעולה לשינוי ערך תא בלוח col) public void changecelvalue(int row, int פעולה המחזירה ערך מספרי למשבצת בלוח pos) public int getcellnum(point פעולה המחזירה ערך מספרי למשבצת בלוח col) public int getcellnum(int row, int פעולה לציור לוח height) public void paint(graphics g, int width, int Die extends Drawable static Random rnd = new Random(); img; private Image תמונה של קוביה point; private int ניקוד הקוביה Die() public יצירת קוביה getnum() public int איחזור ערך הקוביה roll() public void זריקת קובייה ציור קוביה height) public void paint(graphics g, int width, int 2

pos; private Point מיקום שחקן על הלוח name; private String שם שחקן point; private int מספר נקודות צבע החייל של השחקן color; private Color steps; private int מספר הצעדים שעבר על הלוח Player extends Drawable color) public Player(String name, Color פעולה יוצרת שחקן לפי הפרמטרים getname() public String מאחזרת שם שחקן getcolor() public Color מאחזרת צבע שחקן getpoint() public int מאחזרת ניקוד שחקן getposition() public Point מאחזרת מיקום שחקן על הלוח קובעת ניקוד חדש לשחקן point) public void setpoint(int קובעת מיקום חדש pos) public void setposition(point increasesteps() public void מגדילה ב- 1 את מספר הצעדים פעולת ציור על פאנל height) public void paint(graphics g, int width, int DrawPanel extends JPanel ;d private Drawable עצם הניתן לציור על פאנל private int x; פינה שמאלית עליונה - x private int y; פינה שמאלית עליונה - y public DrawPanel(Drawable d, int x, int y, int width, int height) פעולה היוצרת עצם הניתן לציור על פאנל לפי הפרמטרים פעולת ציור העצם g) public void paint(graphics abstract class Drawable public abstract void paint(graphics g, int x, int y); import java.awt.basicstroke; import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.graphics2d; import java.awt.geom.affinetransform; import java.awt.image.bufferedimage; import java.util.random; import java.awt.point; שימוש במחלקות מיובאות בלוח המשחק 3

import javax.swing.jpanel; import java.awt.graphics; import java.awt.dimension; import java.awt.graphics; import java.awt.graphics2d; import java.awt.image; import java.awt.geom.affinetransform; import java.io.file; import java.util.random; import java.awt.point; import java.awt.borderlayout; import java.awt.color; import java.awt.dimension; import java.awt.font; import java.awt.textfield; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.boxlayout; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.border.lineborder; בטיפוס : DrawPanel בקוביית המשחק: במחלקה :Game import javax.swing.jpanel; import java.awt.graphics; import java.awt.dimension; במחלקה DrawPanel 4

המחלקות המרכיבות את המשחק גרסת ג'אווה. כתבה: אביטל (EVI) גרינולד, נעזרה בתלמיד : גבע קיפר, תלמיד כתה י"ב בבי"ס חוגים, חיפה. package ladderroap; import java.awt.point; import java.awt.borderlayout; import java.awt.color; import java.awt.dimension; import java.awt.font; import java.awt.textfield; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.boxlayout; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.border.lineborder; המחלקה : Game שלבי המשחק והמימשק הגרפי. import java.awt.graphics2d; * LadderRoap: contains Square Board, Die and 2 Players * @author EVI with Geva Kipper * @version 4/2/10, update: 10/3/10 public class Game extends JFrame private Board board; private Player[] players; private Die die; private DrawPanel boardpanel; private DrawPanel diepanel; private DrawPanel player1panel; private DrawPanel player2panel; private JButton broll; private JButton bmove; private int index; // Player's index private Point newpos; // position of Player private int win=-1; // no winner 1:"); הקלד שם שחקן JOptionPane.showInputDialog(" String name1 = 2:"); הקלד שם שחקן JOptionPane.showInputDialog(" String name2 = 5

* create Game with 2 players, a Board and d die, * buttomn to roll the die and buttomn to move the Player public Game() this.players = new Player[2]; // Array of Player with 2 players this.players[0] = new Player(name1,Color.blue); this.players[1] = new Player(name2,Color.red.darker()); מעבירים ללוח הפנייה למערך השחקנים // Board(players); this.board = new this.die = new Die(); קובעים את הפריסה לפריים שלנו // BorderLayout()); this.getcontentpane().setlayout(new // בחרתי פריסה שמסדרת רכיבים לפי איזורים - מרכז,צפון,מזרח,מערב ודרום יצירת הרכיבים והוספתם לפריים // יצירת הפאנל של הקוביה // 50,50); DrawPanel(die, diepanel = new יצירת הפאנל של הלוח // 500,500); DrawPanel(board, boardpanel = new הוספת הפאנל של הלוח במרכז הפריים // BorderLayout.CENTER); this.add(boardpanel, ;("סולמות וחבלים") JLabel JLabel header = new header.setforeground(color.magenta); header.setfont(new Font("Arial", Font.BOLD, 20)); this.add(header, BorderLayout.NORTH); יצירת הפאנל של שחקן // 1 60,120); DrawPanel(players[0], player1panel = new יצירת הפאנל של שחקן // 2 60,120); DrawPanel(players[1], player2panel = new //player1panel.setborder(new LineBorder(Color.DARK_GRAY,4)); /* יוצר לייבל מנצח // 1:"); שחקון") JLabel JLabel lable1 = new קובע את צבע הלייבל כצבע השחקן המנצח // lable1.setforeground(players[0].getcolor()); קובע פונט ללייבל // 18)); Font.BOLD, lable1.setfont(new Font("Arial", מוסיף לייבל במקום הנכון // BorderLayout.SOUTH); this.add(lable1, יצירת כפתור הטל קוביה // ;("הטל קוביה") JButton broll = new broll.setpreferredsize(new Dimension(100,50)); broll.addactionlistener((new ActionListener() מאזין ללחיצה על הכפתור // public void actionperformed(actionevent arg0) if (newpos!=null&&players[index].getposition()!=newpos) finalposition(); index=(index+1)%players.length; die.roll(); // update Players' points players[index].setpoint(players[index].getpoint()+die.getnum()); player1panel.repaint(); player2panel.repaint(); 6

)); diepanel.repaint(); newpos=getnewpos(new Point(players[index].getPosition()), die.getnum()); ;("זוז") JButton bmove = new bmove.addactionlistener(new ActionListener() מאזין לכפתור // public void actionperformed(actionevent arg0) players[index].setposition(newpos); players[index].increasesteps(); checkwin(); if (newpos!=null&&board.getcellvalue(newpos)!=newpos) newpos=board.getcellvalue(newpos); boardpanel.repaint(); player1panel.repaint(); player2panel.repaint(); ); JPanel p1 = new JPanel(); p1.setlayout(new BoxLayout(p1, BoxLayout.Y_AXIS)); p1.add(diepanel); p1.add(broll); p1.add(bmove); this.add(p1,borderlayout.east); JPanel p2 = new JPanel(); p2.setlayout(new BoxLayout(p2, BoxLayout.X_AXIS)); p2.add(player1panel); p2.add(player2panel); this.add(p2,borderlayout.south); סיום יצירת הפריים // this.pack(); this.setdefaultcloseoperation(jframe.exit_on_close); this.setvisible(true); //-- private help methods * @param position: Point, position of Player * @param num: number of steps to go * @return new position 7

private Point getnewpos(point position, int num) מקבלת שחקן ומספר צעדים, מחזירה מיקום סופי שלו אחרי תזוזה // for (int i=0;i<num;i++) onestep(position); if (position.getx()>board.size-1) // out of Board, go back a one step position.setlocation(position.getx()-1,position.gety()-1); return position; * @param pos: Point, position of Player on Board * set new position after one step private void onestep(point pos) מבצעת צעד אחד מהמיקום הנתון // if (pos.getx()%2==0) if (pos.gety()==board.size-1) pos.setlocation(pos.getx()+1, board.size-1); else pos.setlocation(pos.getx(), pos.gety()+1); else if (pos.gety()==0) pos.setlocation(pos.getx()+1, 0); else pos.setlocation(pos.getx(), pos.gety()-1); 8 * check if there is a winner and stop the game private void checkwin() בודקת אם שחקן ניצח, ואם כן עוצרת את המשחק // for (int i=0;i<players.length;i++) if (players[i].getposition().getx()==board.size-1 && players[i].getposition().gety()==(board.size-1)*(board.size%2)) //player won win=i; broll.setenabled(false); bmove.setenabled(false);

;("ניצח " + (i+1) + " שחקן") JLabel JLabel l = new l.setforeground(players[i].getcolor()); l.setfont(new Font("Arial", Font.BOLD, 18)); this.add(l, BorderLayout.SOUTH); pack(); ;("!ניצח " + (i+1) + " שחקן" JOptionPane.showMessageDialog(this.getContentPane(), * Player moves to position according point and ladder or roap private void finalposition() Point prev= newpos; newpos=board.getcellvalue(newpos); while (prev!=newpos) prev=newpos; newpos=board.getcellvalue(newpos); players[index].setposition(newpos); boardpanel.repaint(); checkwin(); public static void main(string[] args) new Game(); המחלקה : Board כוללת לוח משחק ריבועי + מערך שחקנים. הלוח כולל פעולת paint לציון הלוח עם השחקנים. package ladderroap; import java.awt.basicstroke; import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.graphics2d; import java.awt.geom.affinetransform; import java.awt.image.bufferedimage; import java.util.random; import java.awt.point; * Borad with Points on each cell. Point has coordinate of baord to move to 9

* 2 dimension array * the board created in random mode * @author EVI * @version 25/2/10 public class Board extends Drawable static private Random rnd = new Random(); final static int SIZE=9; // 50 private Point[][] board; // 2-dimension array of Points private Player[] players; * create Board public Board(Player[] players) this.board = new Point[SIZE][SIZE]; this.players=players; int rndval; int x,y; for (int row=0; row<size; row++) for (int col=0; col<size; col++) this.board[row][col] = new Point(row,col); // add ladders and roaps for (int k=1; k<=5; k++) int row = rnd.nextint(size); int col = rnd.nextint(size); x = rnd.nextint(size); y = rnd.nextint(size); this.board[row][col] = new Point(x,y); // end for k // dont change first and last cell this.board[0][0] = new Point(0,0); this.board[size-1][size-1] = new Point(SIZE-1,SIZE-1); * @return String representing Board public String tostring() 10

String str = ""; for (int row=0; row<size; row++) for (int col=0; col<size; col++) str += String.format("[ %3.0f, %3.0f ] ", this.board[row][col].getx(), this.board[row][col].gety()); str+= String.format("%n"); return str; * @param pos: Point. position of Board's cell * @return value of cell in pos public Point getcellvalue(point pos) int row = (int) pos.getx(); int col = (int) pos.gety(); //System.out.println("inside Board: " + this.board[row][col]); return this.board[row][col]; * @param row: * @param col: * @return value of cell in pos public Point getcellvalue(int row, int col) return this.board[row][col]; public void displaycellvalu(point pos) Point cell = this.getcellvalue(pos); System.out.println("[ " + (int)cell.getx() + "," + (int)cell.gety() + "' ]"); * change value in cell row,col of Board rnadomizely * @param row: integer * @param col: integer * assumption: row and col are vccerrect indexes 11

public void changecelvalue(int row, int col) int rndval; int x,y; x = rnd.nextint(size); y = rnd.nextint(size); Point newpos = new Point(x,y); this.board[row][col] = newpos; * @param row:integer * @param col:integer * @return number of cell on Baord according to row and column public int getcellnum(point pos) int row = (int) pos.getx(); int col = (int) pos.gety(); int num=0; if (row%2==0) num = row*size+col+1; else // row%2==1 num =row*size + SIZE-col; return num; * @param row:integer * @param col:integer * @return number of cell on Baord according to row and column public int getcellnum(int row, int col) int num=0; if (row%2==0) num = row*size+col+1; else // row%2==1 num =row*size + SIZE-col; return num; * This method paints the board on the graphics object g, * scaled to fit the given width and height dimensions 12

public void paint(graphics g, int width, int height) width=math.min(width,height); int w=width/this.size; /*BufferedImage img = new BufferedImage(width,width, BufferedImage.TYPE_INT_ARGB); Graphics g = img.getgraphics(); //Draw the board g.drawrect(0, 0, SIZE*w, SIZE*w); g.setcolor(color.gray); g.fillrect(0, 0, SIZE*w, SIZE*w); g.setcolor(color.black); g.setfont(new Font("Arial", Font.BOLD, 18)); int num; // value of cell for (int row=0;row<size;row++) for (int col=0;col<size;col++) g.drawrect(row*w, col*w, w, w); מצייר ריבוע// (row,col) if (row%2==0) num = row*size+col+1; else // row%2==1 num =row*size + SIZE-col; g.drawstring(""+num, row*w+w/2-5, col*w+w/2-5); מצייר סולמות וחבלים// Graphics2D g2 = (Graphics2D) g; g2.setstroke(new BasicStroke(2)); g.setcolor(color.black); g.setfont(new Font("Arial", Font.BOLD, 18)); int num1,num2; for (int row=0;row<board.length;row++) for (int col=0;col<board.length;col++) if (!board[row][col].equals(new Point(row,col))) אם מהריבוע הזה יוצא סולם או חבל// מצייר קו בין הריבוע הזה לריבוע עליו הוא מצביע// num1 = this.getcellnum(row, col); num2 = this.getcellnum(this.getcellvalue(row,col)); 13

if (num2>num1) g2.setcolor(color.green); g2.setstroke(new BasicStroke(3)); else g2.setcolor(color.white); g2.setstroke(new BasicStroke(2)); g.drawline(row*w+w/2, col*w+w/2, (int)board[row][col].getx()*w+w/2, (int)board[row][col].gety()*w+w/2); מצייר עיגול במרכז הריבוע הזה // ;(3/w g.filloval(row*w+w/4, col*w+w/4,,3/w מצייר את השחקנים בהנחה שיש בדיוק // 2 // draw first player g.setcolor(players[0].getcolor()); g.filloval((int)players[0].getposition().getx()*w+w/4, (int)players[0].getposition().gety()*w, w/2, w/2); // draw second player g.setcolor(players[1].getcolor()); g.filloval((int)players[1].getposition().getx()*w+w/4, (int)players[1].getposition().gety()*w+w/2, w/2, w/2); המחלקה : Player מחלקת שחקן. לכל שחקן שמור מיקומו על לוח המשחק. שמו, הניקוד שלו ניקוד מצטבר לפי זריקת קובייה, מספר הצעדים package ladderroap; import java.awt.*; * Player: has points, position of Board, Color * @author EVI * @version 3/2/10 public class Player extends Drawable שעשה, צבע. המחלקה כוללת את הפעולה paint לתצוגת נתוני שחקן. 14

15 private Point pos; // posiiton on Board private String name; // Player's name private int point; // points of Player private Color color; // colr of Player's soldier private int steps; // number of steps to finish * create Player with name, color and position at start and 0 points * @param name: String * @param color: Color public Player(String name, Color color) this.name = name; this.point = 0; this.pos = new Point(0,0); this.steps = 0; this.color = color; * @return Player's name public String getname() return this.name; * @return Color of layer's soldier public Color getcolor() return this.color; * @return Player's points public int getpoint() return this.point; * @return Player's position on Board public Point getposition() return this.pos; * set points of Player to be point * @param point

16 public void setpoint(int point) this.point = point; * set position on Board to be index * @param pos: integer public void setposition(point pos) this.pos = pos; * increase number of steps by 1 public void increasesteps() this.steps++; * @return String representing Player's name public String tostring() String str="player:\n"; //str+= String.format("%10s %3d %3d %10s", this.name, this,point, this.index, this.color); str+= String.format("%10s has %3d points, ", this.name,this.point); int x = (int) this.pos.getx(); int y = (int) this.pos.gety(); str+= String.format(" in position: ( %3d, %3d ) ", x,y); return str; public void paint(graphics g, int width, int height) Graphics2D g2 = (Graphics2D) g; g2.setstroke(new BasicStroke(3)); g.clearrect(0, 0, width, height); width=math.min(width,height); g.setcolor(color.lightgray); g.drawrect(0, 0, width, height); g.fillrect(0, 0, width, height); g.setfont(new Font("Arial", Font.PLAIN, 16)); g.setcolor(this.getcolor()); g.setfont(new Font("Arial", Font.BOLD, 16)); שם") g.drawstring :שחקן "+this.name, 20, 20); g.setfont(new Font("Arial", Font.PLAIN, 16)); :ניקוד") g.drawstring "+this.point, 10, 40);

מספר") g.drawstring :צעדים "+this.steps,10,60); // end class //============ המחלקה : Die קובית משחק, אשר מציירת קובייה לפי תמונה. בעלת תכונה פרטית אחת ניקוד על הקוביה. package ladderroap; * Die: game diw contains number 1-6, what point shows the die? * @author Evi * @version 29/8/08 import java.awt.graphics; import java.awt.graphics2d; import java.awt.image; import java.awt.geom.affinetransform; import java.io.file; import java.util.random; import javax.swing.imageicon; public class Die extends Drawable static Random rnd = new Random(); Image img; // properties private int point; * create Die with point on top (1-6) public Die() roll(); 17 * @return number on top public int getnum() return this.point; * @return a String representing Die public String tostrign() String str = "Die: " + this.point; return str;

* roll Die public void roll() this.point = rnd.nextint(6)+1; img= new ImageIcon(point+".JPG").getImage(); * Draws the die on the Graphics object g int w=75; public void paint(graphics g, int width, int height) g.drawimage(img, 0, 0, w, w, null); //=============== המחלקה : DrawPanel הפאנל. מחלקה לציור פאנל על פי עצם Drawable ומיקום (x,y) פינה שמאלית עליונה של package ladderroap; import javax.swing.jpanel; import java.awt.graphics; import java.awt.dimension; * DrawPanel : has Panel to paint and (x,y) - left corner of Panel * @author Geva Kipper, update by Evi Gruenwald * @version 8/3/10 public class DrawPanel extends JPanel private Drawable d; private int x; private int y; * @param d: DrawPanel * @param x: x-coordinate of left up corner * @param y: y-coordinate of left up corner * @param width: Panel's with * @param height: Panel's height public DrawPanel(Drawable d, int x, int y, int width, int height) this.d=d; this.x=x; this.y=y; setpreferredsize(new Dimension(width,height)); 18

* @param d: DrawPanel * @param x: x-coordinate of left up corner * @param y: y-coordinate of left up corner public DrawPanel(Drawable d, int width, int height) this(d,0,0, width, height); * @param g: Graphics * paint the Pannel and allow repainting it public void paint(graphics g) d.paint(g, getwidth(), getheight()); //=========================== מחלקה מופשטת: Drawable מייצגת כעצם הניתן לציור על פאנל. package ladderroap; import java.awt.graphics; * @author Geva Kipper * @version 8/3/10 public abstract class Drawable public abstract void paint(graphics g, int x, int y); 19