<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Programmeerimise_algkursus_Harjutus_6</id>
	<title>Programmeerimise algkursus Harjutus 6 - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Programmeerimise_algkursus_Harjutus_6"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Programmeerimise_algkursus_Harjutus_6&amp;action=history"/>
	<updated>2026-10-28T09:30:02Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Programmeerimise_algkursus_Harjutus_6&amp;diff=8228&amp;oldid=prev</id>
		<title>Anttix: /* Hoidume matemaatikast ;) */</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Programmeerimise_algkursus_Harjutus_6&amp;diff=8228&amp;oldid=prev"/>
		<updated>2008-11-26T14:56:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Hoidume matemaatikast ;)&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 26. november 2008, kell 16:56&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l66&quot;&gt;66. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;66. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      * Returns the distance between two points&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      * Returns the distance between two points&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;static &lt;/del&gt;double distance(double x1, double y1, double x2, double y2) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;public &lt;/ins&gt;double distance(double x1, double y1, double x2, double y2) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         double x = x2-x1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         double x = x2-x1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         double y = y2-y1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         double y = y2-y1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l77&quot;&gt;77. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;77. rida:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      *  computes the absolute bearing between two points&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      *  computes the absolute bearing between two points&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      */&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      */&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;static &lt;/del&gt;double absoluteBearing(double x1, double y1, double x2, double y2) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;public &lt;/ins&gt;double absoluteBearing(double x1, double y1, double x2, double y2) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         double hyp = distance(x1, y1, x2, y2);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         double hyp = distance(x1, y1, x2, y2);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         double xo = x2-x1;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         double xo = x2-x1;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lambdadb:diff:1.41:old-2871:rev-8228:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Anttix</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Programmeerimise_algkursus_Harjutus_6&amp;diff=2871&amp;oldid=prev</id>
		<title>Anttix – 26. november 2008, kell 11:28</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Programmeerimise_algkursus_Harjutus_6&amp;diff=2871&amp;oldid=prev"/>
		<updated>2008-11-26T11:28:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Seinte vastu sõitmine on igatpidi paha. Esiteks kaotab robot energiat, teiseks võib ta sedasi nurka või seina äärde kinni jääda ja vastastele kergeks saagiks osutuda.&lt;br /&gt;
&lt;br /&gt;
== Uus sündmus ==&lt;br /&gt;
&lt;br /&gt;
Algatuseks lisame &amp;quot;päris oma&amp;quot; sündmuse, mis hakkab käivituma siis, kui me seinale liiga lähedal oleme.&lt;br /&gt;
&lt;br /&gt;
run meetodisse:&lt;br /&gt;
&amp;lt;div style=&amp;quot;white-space: pre; font-family: monospace;&amp;quot;&amp;gt;&lt;br /&gt;
    public void run() {&lt;br /&gt;
        // Ära keera tukki koos kerega ega radarit koos tukiga!&lt;br /&gt;
        setAdjustGunForRobotTurn(true);&lt;br /&gt;
        setAdjustRadarForGunTurn(true);&lt;br /&gt;
 &lt;br /&gt;
        // Registreerime uue sündmuse, mis käivitub, kui radaritiir on tehtud&lt;br /&gt;
        addCustomEvent(new RadarTurnCompleteCondition(this));&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;span style=&amp;quot;color: green; font-weight: bold;&amp;quot;&amp;gt;// Registreerime sündmuse seina läheduse tunnetamiseks&lt;br /&gt;
        addCustomEvent(new Condition(&amp;quot;CloseToWallCondition&amp;quot;) {&lt;br /&gt;
            public boolean test() {&lt;br /&gt;
                double x = getX();&lt;br /&gt;
                double y = getY();&lt;br /&gt;
                double w = getBattleFieldWidth();&lt;br /&gt;
                double h = getBattleFieldHeight();&lt;br /&gt;
                double wm = 100;&lt;br /&gt;
 &lt;br /&gt;
                if (x &amp;lt;= wm || y &amp;lt;= wm || w - x &amp;lt; wm || h - y &amp;lt; wm) {&lt;br /&gt;
                    return true;&lt;br /&gt;
                } else {&lt;br /&gt;
                    return false;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
        // Käivitame esimese radaritiiru&lt;br /&gt;
        onRadarTurnComplete();&lt;br /&gt;
    &lt;br /&gt;
        while(true) {&lt;br /&gt;
            // Dingel-dangel, kellapendel&lt;br /&gt;
            ahead(100 * suund);&lt;br /&gt;
            suund = -suund;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onCustomEvent meetodisse:&lt;br /&gt;
&amp;lt;div style=&amp;quot;white-space: pre; font-family: monospace;&amp;quot;&amp;gt;&lt;br /&gt;
    public void onCustomEvent(CustomEvent e) {&lt;br /&gt;
        String s = e.getCondition().getName();&lt;br /&gt;
    &lt;br /&gt;
        if(&amp;quot;robocode.RadarTurnCompleteCondition&amp;quot;.equals(s)) {&lt;br /&gt;
                onRadarTurnComplete();&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;span style=&amp;quot;color: green; font-weight: bold;&amp;quot;&amp;gt;if(&amp;quot;CloseToWallCondition&amp;quot;.equals(s)) {&lt;br /&gt;
            onCloseToWall();&lt;br /&gt;
        }&amp;lt;/span&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hoidume matemaatikast ;) ==&lt;br /&gt;
Seinast eemale saamiseks on kõige parem viis sõita keskpunkti poole. Et teada kuhu poole jääb keskpunkt, on vaja funktsiooni, mis oskaks arvutada peilungit kahe punkti vahel. Ise jalgratast ei ole vaja leiutada, internet on täis koodinäiteid, mis on kirjutatud matemaatikat paremini jagavate kodanike poolt. Meie kasutame ühte, mida õppejõud on natuke kohendanud.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    /**&lt;br /&gt;
     * Returns the distance between two points&lt;br /&gt;
     */&lt;br /&gt;
    static double distance(double x1, double y1, double x2, double y2) {&lt;br /&gt;
        double x = x2-x1;&lt;br /&gt;
        double y = y2-y1;&lt;br /&gt;
        double range = Math.sqrt(x*x + y*y);&lt;br /&gt;
&lt;br /&gt;
        return range;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     *  computes the absolute bearing between two points&lt;br /&gt;
     */&lt;br /&gt;
    static double absoluteBearing(double x1, double y1, double x2, double y2) {&lt;br /&gt;
        double hyp = distance(x1, y1, x2, y2);&lt;br /&gt;
        double xo = x2-x1;&lt;br /&gt;
        double yo = y2-y1;&lt;br /&gt;
        double angle = Math.asin(xo / hyp);&lt;br /&gt;
&lt;br /&gt;
        if(yo &amp;lt; 0) {&lt;br /&gt;
            angle = Math.PI - angle;&lt;br /&gt;
        }&lt;br /&gt;
        else if(xo &amp;lt; 0) {&lt;br /&gt;
            angle += Math.PI * 2;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        angle = Math.toDegrees(angle);&lt;br /&gt;
        return angle;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lahkume seina lähedusest ==&lt;br /&gt;
Seina lähedusest lahkumine võiks käia umbes nii:&lt;br /&gt;
# Vaatame kuhu jääb mänguväljaku keskpunkt meie sõidusuuna suhtes&lt;br /&gt;
# Otsustame, kas keskpunkti poole sattumiseks tuleb liikuda edasi või tagasi&lt;br /&gt;
# Hakkame õiges suunas sõitma ja protsessi kiirendamiseks keerame vastavalt kas nina või saba keskpunkti poole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    public void onCloseToWall() {&lt;br /&gt;
        double x = getX();&lt;br /&gt;
        double y = getY();&lt;br /&gt;
        double w = getBattleFieldWidth();&lt;br /&gt;
        double h = getBattleFieldHeight();&lt;br /&gt;
&lt;br /&gt;
        double suund_keskele = absoluteBearing(x, y, w / 2, h / 2);&lt;br /&gt;
        double keeramisnurk = normalRelativeAngle(suund_keskele - getHeading());&lt;br /&gt;
        double soita = Math.abs(getDistanceRemaining());&lt;br /&gt;
&lt;br /&gt;
         if(Math.abs(keeramisnurk) &amp;gt; 90) {&lt;br /&gt;
             soita = -soita;&lt;br /&gt;
             keeramisnurk = keeramisnurk - 90;&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
        setAhead(soita);&lt;br /&gt;
        setTurnRight(keeramisnurk);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Anttix</name></author>
	</entry>
</feed>